gpt4 book ai didi

r - R Studio 中的奇怪调试结果

转载 作者:行者123 更新时间:2023-12-02 21:14:25 28 4
gpt4 key购买 nike

我必须说我对 RStudio/R 还很陌生,所以我希望这不是用户错误。然而,在调试时,我在 Debug模式下得到了一些奇怪的结果。

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.) 是什么导致代码像这样前后跳转而没有明显的函数调用?

亲切的问候

巴兹

最佳答案

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

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

我无法用您的示例重现此内容(它似乎引用了未声明的变量m);如果您可以解决该问题并将其发送给我(rstudio dot com 的乔纳森),我将看看我们是否可以改进启发式方法,以便此案例效果更好。

关于r - R Studio 中的奇怪调试结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31657555/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com