Я запускаю программу оптимизации, которую я написал в многоязычной структуре. Поскольку для выполнения задачи я полагаюсь на разные языки, все должно быть автономным, поэтому его можно запустить через пакетный файл. Все прошло отлично в течение 2-3 месяцев, но мне, наконец, не повезло, когда одна из важнейших частей этого процесса, выполненная с помощью автономного сценария R, столкнулась с чем-то новым и дала мне сообщение об ошибке. Это сообщение об ошибке делает все визжать к остановке, несмотря на все мои усилия:Как избежать остановки выполнения отдельного r-скрипта, который встречает ошибку?
selMEM<-forward.sel(muskfreq, musk.MEM, adjR2thresh=adjR2)
Procedure stopped (adjR2thresh criteria) adjR2cum = 0.000000 with 0 variables (superior to -0.005810)
Error in forward.sel(muskfreq, musk.MEM, adjR2thresh = adjR2) :
No variables selected. Please change your parameters.
Я знаю, почему я получаю это сообщение: он предупреждает меня, что переменные не выше порога я запрограммирован, чтобы сохранить во время прямого выбора , Хотя этого не происходило в сотнях запусков, это не такая уж большая сделка, мне просто нужно сказать R, что делать дальше. Здесь я потерялся. После исчерпывающего поиска по нескольким сообщениям (such as here), это швы, которые пытаются() и tryCatch() - это путь. Так что я попытался следующее:
selMEM<-try(forward.sel(muskfreq, musk.MEM, adjR2thresh=adjR2))
if(inherits(selMEM, "try-error")) {
max<-0
cumR2<-0
adjR2<-0
pvalue<-NA
} else {
max<-dim(selMEM)[1]
cumR2<-selMEM$R2Cum[max]
adjR2<-selMEM$AdjR2Cum[max]
pvalue<-selMEM$pval[max]
}
Код после проблемной линии отлично работает, если я исполню ее построчно в R, но когда я исполняю его как отдельный сценарий из командной строки, я все еще получаю то же сообщение об ошибке, и весь мой процесс застывает до того, как он выполнит следующее.
Любые предложения о том, как сделать эту работу?
Спасибо за этот ответ, это, безусловно, представляется более перспективным, чем то, что я начал с. Тем не менее, у меня такая же проблема, как и раньше ... скрипт прекрасно работает во всех сценариях, которые я бросаю на него, если я выполняю его по строкам в консоли R (несмотря на сообщения об ошибках), но в автономном скрипте он дает me: 'Ошибка в tryCatchOne (expr, names, parentenv, обработчики [[1L]]): попытка применить нефункции' и' Execution halted' –
А, я виноват. Я считаю, что 'error' требует функции. Я сделал редактирование - попробуйте это. –
Yup, я просто обманывал и в итоге придумал почти то же самое, я отредактировал сценарий выше, чтобы показать окончательные настройки, которые заставили все работать. Спасибо, куча, ваш вклад был бесценным! –