我使用的代碼可以計算語法錯誤,並報告程序運行後語法錯誤的數量。錯誤計數代碼是在stackoverflow上提供的,以迴應我之前的問題:R: is there a command for the end of a file that states whether any errors occurred?程序運行後定位錯誤
有時我忘記在分析大型數據集時註釋掉打印消息,而R無法打印所有數據和所有代碼。
[ reached getOption("max.print") -- omitted 498 rows ]
發生這種情況時,錯誤計數代碼報告錯誤,我不能簡單地向上滾動以查看錯誤是什麼。在R代碼運行後有沒有找到錯誤的方法?我嘗試使用traceback()
,但它沒有幫助。我從來沒有使用traceback()
,也許我沒有正確使用它。我在網上找到的其他潛在解決方案似乎需要在運行R文件之前插入代碼。
我可以重新運行R代碼並將print命令註釋掉,但在這種情況下代碼需要幾個小時才能運行。也許我可以用較小的數據集快速重新運行代碼以找到錯誤,但是假設數據集的大小不會以某種方式導致錯誤。
這是一個包含錯誤的示例程序。如果n
被更改爲一個很大的數字,也許是10000000,那麼這段代碼看起來會創建與我上面描述的類似的場景或場景。感謝您的任何建議。
我通常通過將其保存在* .r文件中來運行我的代碼,然後複製該文件的內容並將其粘貼到安裝在我的Dell PC 64位Windows 7 Professional桌面上的默認R GUI中R應用程序。
# the four lines below are for counting syntax errors
.error.count <- 0
old.error.fun <- getOption("error")
new.error.fun <- quote(.error.count <- .error.count + 1)
options(error = new.error.fun, width=2400)
##########################################################
n <- 10
a <- rnorm(n,10,4)
b <- rnorm(n,50,8)
c <- EXP(b)
d <- a + b
df <- data.frame(a,b,d)
df
##########################################################
# the three lines below count the number of errors in the code above
cat("ERROR COUNT:", .error.count, "\n")
options(error = old.error.fun)
rm(.error.count, old.error.fun, new.error.fun)
##########################################################
traceback()
# No traceback available
謝謝你的回覆。我本可以給這個複選標記發佈,但只是因爲他的回答對我來說更清楚一些而給了Andrie。我喜歡在日誌中包含源代碼行號的功能,但無法弄清楚如何執行此操作。 –
我不認爲'options(show.error.locations = TRUE)'被添加到R 2.15。確保你的R版本是最新的。否則,設置此選項時,R將在錯誤消息中包含行號。 –