使用我编写的 R 函数时出现错误:
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: algorithm did not converge
我做了什么:
glm.fit
的两个函数.他们是 window()
和 save()
. 我的一般方法包括添加
print
和 stop
命令,并逐行执行一个函数,直到找到异常为止。但是,我不清楚使用这些技术在代码中出现此错误的地方。我什至不确定代码中的哪些函数依赖于
glm.fit
.我该如何诊断这个问题?
最佳答案
我会说调试是一种艺术形式,所以没有明确的 Elixir 。任何语言都有很好的调试策略,它们也适用于这里(例如 read this nice article )。例如,第一件事是重现问题……如果您不能这样做,那么您需要获取更多信息(例如使用日志记录)。一旦可以重现它,就需要将其减少到源头。
我会说我有一个最喜欢的调试例程,而不是“技巧”:
traceback()
查看堆栈跟踪。 :显示错误发生的位置,如果您有多个嵌套函数,这尤其有用。 options(error=recover)
;这会立即切换到发生错误的浏览器模式,因此您可以从那里浏览工作区。 debug()
函数并逐行执行脚本。 R 2.10 中最好的新技巧(使用脚本文件时)是使用
findLineNum()
和 setBreakpoint()
职能。作为最后的评论:根据错误,设置
try()
也很有帮助。或 tryCatch()
围绕外部函数调用的语句(尤其是在处理 S4 类时)。这有时会提供更多信息,并且还可以让您更好地控制在运行时如何处理错误。这些相关问题有很多建议:
关于r - 在 R 中调试的一般建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882734/