【问题标题】:How to use tryCatch in R如何在 R 中使用 tryCatch
【发布时间】:2014-09-08 03:29:48
【问题描述】:

我想使用try()tryCatch() 或类似的函数来检测我的模型中是否存在名为“fit1”的错误。如果模型很好,我想用“fit1”,否则我想用“fit2”

fit1<-glmer(stat ~ dataint + DBH + DBH2 + (1|site_plot), family=binomial(link="logit"))

fit2<-glm (stat ~ dataint + DBH + DBH2, family=binomial(link="logit"))

你知道怎么做吗? 我没有添加任何数据,因为我的问题可能很容易解决,但如果需要,我可以上传它们。

谢谢!

【问题讨论】:

    标签: r try-catch lmer


    【解决方案1】:

    使用trytryCatch 并不难。要阅读有关错误处理的更多信息,我建议阅读 Hadley Wickham 即将出版的新书章节Advanced R Programming: Exceptions and Debugging。它真是太棒了!

    对于您的具体示例,您可以使用以下两个函数之一:使用try 允许您在发生错误时继续执行函数调用(您可以稍后注意),而使用tryCatch您可以提前指定错误处理:

    select<-function(data, formula1, formula2){
    
      fit1 <- try(lm(formula1, data))
      fit2 <- lm(formula2, data)
    
      if(is(fit1, "try-error")) fit2 else fit1
    }
    
    select1<-function(data, formula1, formula2){
    
      tryCatch(lm(formula1, data), error = function(e) lm(formula2, data))
    
    }
    

    但是,如果您知道只有第一个模型会失败,那当然可以。可能还有其他情况,所以请三思而后行。祝你好运!

    【讨论】:

      猜你喜欢
      • 2017-06-10
      • 1970-01-01
      • 2012-08-24
      • 2015-06-01
      • 2016-06-17
      • 1970-01-01
      相关资源
      最近更新 更多