在這一個輪迴我們與欺詐之人相遇--它們都彼此被困在自己的火焰之中。
這一輪迴的廣度和深度或許超過了大部分人的預期。原因包括:
- 向下兼容性。這裏有大概20年的兼容問題需要考慮。如果你是一個新的使用者,你應該會認爲這些粗糙的瑕疵應該被理順而不管它是什麼。如果一個新版本的R破壞了你之前可以成功運行的代碼,你會有不同的想法。哪些較大的碎片已經被打平,但是仍然還有大量的小細節需要調節。
- R需要同時滿足交互性和可編程性。這就會出現緊張的局勢。一部分函數採用了特殊的安排以使交互性更加簡便。如果在一個函數裏邊使用這些函數,這些函數可能會出現問題。它們也會促進錯誤的預期。
- R 做了很多。
trace(myFun, exit=quote(browser()))
trace(myFun, edit=TRUE)
options(error=recover)
或者 options(error=dump.frames)
debugger()
options(warn=2)
如果你想在你的.First函數中設置錯誤選項,你需要一個小技巧,因爲在.First()運行的時候,並不是所有事情都到位:
options(error=expression(recover()))
或者 options(error=expression(dump.frames()))
debug(myfun)
undebug(myfun)
這種調試方法的更多的版本將會在debug包中被發現。