R Studio

时间:2015-07-27 15:47:09

标签: r rstudio

我必须通过说我仍然是RStudio / R的新手来预测这一点,所以我希望这不是用户错误。但是在调试时,我在调试模式下会得到一些奇怪的结果。

1)代码跳转到代码的另一部分而不显然被调用。

2)当发生这种情况时,荧光笔仅部分突出显示它跳转到的代码,但边距中的箭头指向此部分突出显示的行

3)然后代码返回,使其跳离原来的

我收到警告“调试位置是近似的,因为源代码不可用”。这与问题有关吗?

您可以通过安装软件包dlm:

来复制结果

https://cran.r-project.org/web/packages/dlm/dlm.pdf

 p<-3
 G=diag(c(0.9963,0.9478,0.7740))
 W=diag(c(0.0026^2,0.0027^2,0.0035^2))
 C0_est=solve(diag(p)-G%*%t(G))*W
 mod2<-dlm(m0=c(0.0501,-0.0251,-0.0116),C0=C0_est,FF=X,V=0.000000001*diag(m),GG=diag(c(0.9963,0.9478,0.7740)),W=diag(c(0.0026^2,0.0027^2,0.0035^2)))
 debugonce(dlmForecast)
 dlmForecast(mod2, nAhead=5, sampleNew=2)

当你逐步使用F10时,你会发现代码从第28,32,54和57行跳到L7,从第47行跳到L4。

Q1。)为什么要调试的行的部分突出显示是什么意思?

Q2。)是什么导致代码在没有明显函数调用的情况下向前和向后跳转?

亲切的问候

Baz

1 个答案:

答案 0 :(得分:4)

大多数R软件包都不包含软件包源代码的副本(keep.source选项控制此行为;您可以阅读有关它的更多信息here)。当您从这种类型的包中调试代码时,RStudio必须猜测代码最初的样子以及当前执行点在该代码中的位置。此过程包括一些启发式方法,偶尔会误解执行点。所以你所看到的并不是跳跃的实际执行点,而是RStudio错误地猜测它在去除代码中的位置。

来自您自己的R脚本(以及来自keep.source的包)的代码具有源引用(请参阅R journal article),它允许RStudio精确地排列代码和执行点。

我无法使用您的示例重现这一点(它似乎引用了一个未声明的变量m);如果你能解决这个问题并将其发送给我(jonathan at rstudio dot com),我会看看我们是否可以改进启发式方法,以便这种情况更好。