如何在 RStudio 中为包函数设置断点

Baz*_*man 5 r rstudio

要复制此错误,您必须首先安装包 MARSS。我还包括用户指南。

https://cran.r-project.org/web/packages/MARSS/vignettes/UserGuide.pdf

可以使用第 35 页上的示例调用

dat = t(harborSealWA)
dat = dat[2:nrow(dat),]
debugonce(MARSSkem)
kemfit = MARSS(dat)
Run Code Online (Sandbox Code Playgroud)

在 RStudio 中为 MARSSkem 触发 debugmode 时,您会发现无法设置断点!屏幕顶部还有一条调试消息说:“调试位置是近似的,因为源代码不可用”。我想这就是我不能设置断点的原因!

问题是我试图定位的错误(在所示的简单示例中不存在)是在第 55 次迭代中发现的,并且每次迭代都包含多个 for 循环,每个循环有 100 个循环!手动一步一步根本不实用!

Q1.) 有没有办法在 R studio 中为这个函数设置断点?

Q2.) 如果不是,我找到这个问题的最佳选择是什么?(理想情况下,我不想弄乱包源代码,但如果它是唯一的选择,我会这样做)

谢谢

巴兹

jer*_*ycg 3

最简单的方法(我认为)是制作您自己的函数副本,获取它的源代码,然后使用断点。

去做这个:

View(MARSS)
Run Code Online (Sandbox Code Playgroud)

您应该会看到源弹出窗口。现在将其复制粘贴到一mymarss <-开始的新脚本中,保存它(可能为 mymarss.R),然后获取它。

source(mymarss.R)
Run Code Online (Sandbox Code Playgroud)

现在你可以像平常一样调试它:

dat = t(harborSealWA)
dat = dat[2:nrow(dat),]
debugonce(mymarss)
kemfit = mymarss(dat)
Run Code Online (Sandbox Code Playgroud)

您可以自由添加/删除断点等。