相关疑难解决方法(0)

调试包:: function()虽然使用了延迟评估

如果由于惰性评估而未知包,我如何在R中有效调试.我想保留基本browser()功能,因为它工作得很好 - 即使是testthat package.如以下文章中所述,--with-keep.source在"项目选项=>构建工具"中为我的项目设置.

要重现该行为,请创建一个TestDebug包含的包

myfun <- function(a,b) {return(a+b)}
Run Code Online (Sandbox Code Playgroud)

和一个脚本 example.R

{
browser()
TestDebug::myfun(1,2)
}
Run Code Online (Sandbox Code Playgroud)

编辑:还应涵盖TestDebug::myfun(1,2)呼叫的情况otherpackage::myfun2(1,2).我认为情况应该发生在每个"真正"的包装中?

r rstudio

10
推荐指数
1
解决办法
279
查看次数

如何在 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.) 如果不是,我找到这个问题的最佳选择是什么?(理想情况下,我不想弄乱包源代码,但如果它是唯一的选择,我会这样做)

谢谢

巴兹

r rstudio

5
推荐指数
1
解决办法
2307
查看次数

标签 统计

r ×2

rstudio ×2