3 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
當(dāng)發(fā)生錯(cuò)誤時(shí),我通常做的第一件事是通過調(diào)用 traceback()
:這顯示了錯(cuò)誤發(fā)生的位置,如果您有幾個(gè)嵌套函數(shù),這一點(diǎn)尤其有用。 接下來我會(huì) options(error=recover)
這會(huì)立即切換到出現(xiàn)錯(cuò)誤的瀏覽器模式,這樣您就可以從那里瀏覽工作區(qū)。 如果我仍然沒有足夠的信息,我通常使用 debug()
函數(shù)并逐行遍歷腳本。
findLineNum()
setBreakpoint()
try()
tryCatch()

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
Rprof()
summaryRprof()
profr
集 options(warn=2)
將警告視為錯(cuò)誤
options
集 options(error=recover)
跑 recover()
當(dāng)發(fā)生錯(cuò)誤時(shí),正如Shane所指出的(如 ..或者任何其他你認(rèn)為有用的函數(shù)都可以運(yùn)行。
將內(nèi)部函數(shù)調(diào)用包裝為 try()
若要返回更多信息,請執(zhí)行以下操作。 對于*應(yīng)用函數(shù),使用 .inform=TRUE
(來自plyr包)作為Apply命令的選項(xiàng)
browser()
放入您可能要調(diào)試的函數(shù)中。 browser(expr=isTRUE(getOption("myDebug")))
并將全局選項(xiàng)設(shè)置為 options(myDebug=TRUE)
您甚至可以包裝瀏覽器調(diào)用: myBrowse <- browser(expr=isTRUE(getOption("myDebug")))
然后打電話給 myBrowse()
因?yàn)樗褂昧巳帧?/trans>
findLineNum()
獲取源文件名和行號,并返回函數(shù)和環(huán)境。當(dāng)你 source()
一個(gè).R文件,它在#n行返回一個(gè)錯(cuò)誤,但是您需要知道#n行中的函數(shù)是什么。 setBreakpoint()
獲取源文件名和行號,并在其中設(shè)置斷點(diǎn)。
checkUsage
setBreakpoint()
trace()
fixInNamespace
assignInNamespace
options(error=dump.frames)
- 3 回答
- 0 關(guān)注
- 954 瀏覽
添加回答
舉報(bào)