繁体   English   中英

如何在R中使用tryCatch

[英]How to use tryCatch in R

我想使用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"))

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

谢谢!

使用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))

}

但是,如果您知道只有第一个模型可能会失败,那当然有效。 可能还有其他场景,所以请考虑一下。 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM