3 回答
TA贡献1865条经验 获得超7个赞
当发生错误时,我通常做的第一件事是通过调用 traceback()
:这显示了错误发生的位置,如果您有几个嵌套函数,这一点尤其有用。 接下来我会 options(error=recover)
这会立即切换到出现错误的浏览器模式,这样您就可以从那里浏览工作区。 如果我仍然没有足够的信息,我通常使用 debug()
函数并逐行遍历脚本。
findLineNum()
setBreakpoint()
try()
tryCatch()
TA贡献1868条经验 获得超4个赞
Rprof()
summaryRprof()
profr
集 options(warn=2)
将警告视为错误
options
集 options(error=recover)
跑 recover()
当发生错误时,正如Shane所指出的(如 ..或者任何其他你认为有用的函数都可以运行。
将内部函数调用包装为 try()
若要返回更多信息,请执行以下操作。 对于*应用函数,使用 .inform=TRUE
(来自plyr包)作为Apply命令的选项
browser()
放入您可能要调试的函数中。 browser(expr=isTRUE(getOption("myDebug")))
并将全局选项设置为 options(myDebug=TRUE)
您甚至可以包装浏览器调用: myBrowse <- browser(expr=isTRUE(getOption("myDebug")))
然后打电话给 myBrowse()
因为它使用了全局。
findLineNum()
获取源文件名和行号,并返回函数和环境。当你 source()
一个.R文件,它在#n行返回一个错误,但是您需要知道#n行中的函数是什么。 setBreakpoint()
获取源文件名和行号,并在其中设置断点。
checkUsage
setBreakpoint()
trace()
fixInNamespace
assignInNamespace
options(error=dump.frames)
- 3 回答
- 0 关注
- 921 浏览
添加回答
举报