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 關注
- 964 瀏覽
添加回答
舉報