我想使用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"))
Run Code Online (Sandbox Code Playgroud)
你知道怎么做吗?我没有添加任何数据,因为我的问题可能很容易解决,但如果需要,我可以上传它们.
谢谢!
使用try或tryCatch不难.要阅读有关错误处理的更多信息,我建议阅读Hadley Wickham即将出版的新书" Advanced R Programming:Exceptions and Debugging"一章.它真棒!
对于您的具体示例,您可以使用以下两个函数之一:using 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))
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您知道只有第一个模型可能会失败,那当然有效.可能还有其他场景,所以请考虑一下.祝好运!