r - 在 R 中调试的一般建议

标签 r debugging r-faq

使用我编写的 R 函数时出现错误:

Warning messages:
1: glm.fit: algorithm did not converge 
2: glm.fit: algorithm did not converge 

我做了什么:
  • 单步执行函数
  • 添加 print 以找出错误发生在哪一行表明不应使用 glm.fit 的两个函数.他们是 window()save() .

  • 我的一般方法包括添加 printstop命令,并逐行执行一个函数,直到找到异常为止。

    但是,我不清楚使用这些技术在代码中出现此错误的地方。我什至不确定代码中的哪些函数依赖于 glm.fit .我该如何诊断这个问题?

    最佳答案

    我会说调试是一种艺术形式,所以没有明确的 Elixir 。任何语言都有很好的调试策略,它们也适用于这里(例如 read this nice article )。例如,第一件事是重现问题……如果您不能这样做,那么您需要获取更多信息(例如使用日志记录)。一旦可以重现它,就需要将其减少到源头。

    我会说我有一个最喜欢的调试例程,而不是“技巧”:

  • 当发生错误时,我通常做的第一件事是通过调用 traceback() 查看堆栈跟踪。 :显示错误发生的位置,如果您有多个嵌套函数,这尤其有用。
  • 接下来我要设置options(error=recover) ;这会立即切换到发生错误的浏览器模式,因此您可以从那里浏览工作区。
  • 如果我仍然没有足够的信息,我通常使用 debug()函数并逐行执行脚本。

  • R 2.10 中最好的新技巧(使用脚本文件时)是使用 findLineNum()setBreakpoint()职能。

    作为最后的评论:根据错误,设置 try() 也很有帮助。或 tryCatch()围绕外部函数调用的语句(尤其是在处理 S4 类时)。这有时会提供更多信息,并且还可以让您更好地控制在运行时如何处理错误。

    这些相关问题有很多建议:
  • Debugging tools for the R language
  • Debugging lapply/sapply calls
  • Getting the state of variables after an error occurs in R
  • R script line numbers at error?
  • 关于r - 在 R 中调试的一般建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882734/

    相关文章:

    R 带条件的频率表

    r - 使用 R 包 OFFICER 和 RVG 将绘图从 R 导出到 pptx 文件时无法指定幻灯片大小

    java - 我可以从 Eclipse/IDE 调试器连接到远程机器上的 jsadebugd 进程吗?

    debugging - 检测VB6中是否附加调试器

    r - 使用 ggplot2 并排绘图

    r - 如何按组对变量求和

    r - 使用 as.yearqtr 将 Qqyyyy 转换为季度

    r - 使用对象而不是数组将 R 数据帧嵌套到 JSON

    ruby-on-rails - 如何调试速度慢得无法忍受的 Rails Assets 预编译

    r - 如何按字典顺序订购我的数据框