发生错误时切换到其他功能,R中的程序中断

时间:2012-11-02 03:11:15

标签: r glm

  

可能重复:
  Exception handling in R

我使用glm.nb函数来拟合NB模型,但有时程序会出错:

Error in while ((it <- it + 1) < limit && abs(del) > eps) { : missing value where TRUE/FALSE needed

然后整个程序崩溃了。现在我编写另一个可以解决这种收敛问题的函数(这是由于极大的似然值;请参阅this post)。

我的问题是:当glm.nb函数发生故障时,如何告诉R切换到我自己的函数?

我被告知要在glm.nb的源代码中查找错误消息,然后修改该部分。但是,我没有明确地找到这样的代码,并想知道R中是否有更简单的方法可以跳出一个分解函数并通过某些if-else语句切换到另一个函数?

1 个答案:

答案 0 :(得分:0)

两个帖子回答了这个问题(感谢@xin guo指出了正确的方向):

catching an error and then branching logic

Functions and try() in R

在我的实验中,当您在warning = function(w)中使用error = function(e)tryCatch()时,我注意到了差异。如果只有警告,则不会识别错误部分,反之亦然。确保从R获得正确的消息,并在tryCatch()中使用相应的参数:)