gpt4 book ai didi

r - R 调试的一般建议

转载 作者:行者123 更新时间:2023-12-03 04:35:51 25 4
gpt4 key购买 nike

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

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

我做了什么:

  1. 逐步执行该函数
  2. 添加 print 来查明错误发生在哪一行,这表明两个函数不应使用 glm.fit。它们是 window()save()

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

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

最佳答案

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

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

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

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

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

这些相关问题有很多建议:

关于r - R 调试的一般建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4442518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com