找出R中发生错误的位置

时间:2014-08-03 21:18:48

标签: 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)通过error(options=recover)中的R shell运行脚本并获取以下菜单:

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)

但我不知道该如何处理。我在SO上经历了很多不同的答案并尝试了他们上面提到的但仍然无法解决这个问题。为什么这些似乎是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)

1 个答案:

答案 0 :(得分:3)

那个标志在前面发布....你已经输入了... BrowserZone:

 ?browser   # read the controls documentation

然后在[r] browser debug

上进行SO搜索

如果在使用debug('func_name")设置调试标志后运行该函数,则浏览器会告诉您错误被抛出的哪一行。其他选择:当这是关于SO的早期问题时,Shane建议:

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

有能力设置断点并恢复具有特定代码的特定行号的代码,尽管我认为这不会让您完全符合您的要求。

?findLineNum
?setBreakpoint   # both on same page.

如果要构建程序包,可以通过设置环境变量来获益: R_KEEP_PKG_SOURCE =是

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