Как использовать tryCatch в 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"))
Ты знаешь как это сделать? Я не добавляю никаких данных, потому что мою проблему, вероятно, легко решить, но если это необходимо, я могу загрузить их.
Спасибо!
1 ответ
С помощью try
или же tryCatch
не сложно. Чтобы узнать больше об обработке ошибок, я предлагаю прочитать новую книгу Хэдли Уикхэма " Расширенное программирование на R: исключения и отладка". Это просто замечательно!
Для вашего конкретного примера вы можете использовать одну из следующих двух функций: 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))
}
Но это, конечно, работает, если вы знаете, что только первая модель может потерпеть неудачу. Могут быть и другие сценарии, поэтому подумайте над ними. Удачи!