Переключитесь на другую функцию при возникновении ошибки и сбоях программы в R

Возможное дублирование:
Обработка исключений в R

Я использую функцию glm.nb для соответствия модели NB, но иногда программа выдает ошибку:

Error in while ((it <- it + 1) < limit && abs(del) > eps) { : missing value where TRUE/FALSE needed

Затем вся программа ломается. Теперь я пишу другую функцию, которая может решить такую ​​проблему сходимости (это связано с чрезвычайно большим значением вероятности; см. этот пост).

Мой вопрос: как я могу сказать R переключиться на мою собственную функцию, когда функция glm.nb не работает?

Мне сказали найти сообщение об ошибке в исходном коде glm.nb, а затем изменить эту часть. Однако я не нашел таких кодов в явном виде и задаюсь вопросом, есть ли в R более простой способ выпрыгнуть из функции разбиения и переключиться на другую функцию с помощью некоторых if-else операторов?


r glm
person alittleboy    schedule 02.11.2012    source источник
comment
Я предлагаю эту ссылку: stackoverflow.com/questions/2622777/exception-handling -in-r   -  person    schedule 02.11.2012
comment
@xin guo: спасибо! Я также считаю эту ссылку очень полезной: stackoverflow .com / questions / 3440373 / functions-and-try-in-r? rq = 1.   -  person alittleboy    schedule 02.11.2012


Ответы (1)


На этот вопрос отвечают два сообщения (спасибо @xin guo за указание правильного направления):

обнаружение ошибки и затем логика ветвления

Функции и try () в R

В своих экспериментах я заметил различия, когда вы используете warning = function(w) и error = function(e) в tryCatch(). Если есть только предупреждение, то ошибочная часть не будет распознана, и наоборот. Убедитесь, что вы получили правильное сообщение от R, и используйте соответствующий аргумент в tryCatch() :)

person alittleboy    schedule 02.11.2012