r - 查找 R 中发生错误的位置

标签 r debugging error-handling rstudio

我正在 Rstudio 中运行脚本,并收到以下特定于我的代码的错误(警告可能来自初始错误):

Error in `[<-`(`*tmp*`, mon, n, value = 0) : subscript out of bounds
In addition: There were 50 or more warnings (use warnings() to see the first 50)

我尝试使用 ctrl+F 搜索我的脚本,但似乎这不在脚本中。我尝试使用 traceback() 并得到 No traceback available 我尝试使用 source(filepath) 中通过 R shell 运行脚本error(options=recover) 并得到以下菜单:

Enter a frame number, or 0 to exit   

1: source("C:\\Users\\Patrick\\Google Drive\\FIDS\\MESc\\Thesis\\KNN-CADv4\\RModel\\Analysis_UI_modified.r")
2: withVisible(eval(ei, envir))
3: eval(ei, envir)
4: eval(expr, envir, enclos)

但我不知道该怎么办。我已经浏览了很多不同的答案,并尝试了他们上面提到的内容,但仍然无法解决这个问题。为什么这些对于 R 来说似乎是一个问题?

我可以遵循任何步骤来查找此错误对应的脚本中的哪一行(显然无需手动遍历每一行......)?我通常使用 Python 和 Matlab,通常可以获取发生错误的行并处理需要修复的问题,但对于 R 来说这似乎并不简单。错误本身很明显,但我需要知道错误在哪里。

这是我在 Windows 7 上使用的 R:

R version 3.1.0 (2014-04-10) -- "Spring Dance"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

最佳答案

前面那个标志牌...您已进入...BrowserZone:

 ?browser   # read the controls documentation

然后进行 SO 搜索:[r] browser debug

如果您在使用 debug('func_name") 设置调试标志后运行该函数,那么浏览器应该告诉您在哪一行抛出了错误。其他选项:当这是一个早期问题时关于SO,肖恩建议:

options(error = quote({dump.frames(to.file=TRUE); q()}))

可以设置断点并在具有特定代码的特定行号处恢复代码,尽管我认为这也不能完全满足您的需求。

?findLineNum
?setBreakpoint   # both on same page.

如果您正在构建软件包,您可能会通过设置环境变量受益: R_KEEP_PKG_SOURCE=是

您在某处创建了“mon”变量。查找将名为“mon”的对象或列分配给值的代码。

关于r - 查找 R 中发生错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109227/

相关文章:

r - 如何在 R 中正确地将 map 添加到光栅图像

r - 如何将 spline() 应用于大型数据帧

android - 如何验证/排除 AVD 调试 key 的故障

java - Android 后台服务启动后立即自行关闭

c# - 错误处理超过重试次数 10

angularjs - 作为开发人员,我如何在 AngularJS 中捕获 ng-model 数据绑定(bind)错误?

r - aes里面的函数

r - 根据 DT2 列值更新 DT1 中行子集的列值

python - 在 pydev 中调试 - 如何使 python 对象可扩展 - 就像在 java 调试器中一样?

sql-server-2005 - 错误发生后仍可继续执行程序