Как использовать 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))

}

Но это, конечно, работает, если вы знаете, что только первая модель может потерпеть неудачу. Могут быть и другие сценарии, поэтому подумайте над ними. Удачи!

Другие вопросы по тегам