5 ответов:
помимо ответа Шейна, указывающего вам на другие обсуждения StackOverflow, вы можете попробовать функцию поиска кода. Этот оригинальный ответ указал на поиск кода Google с тех пор был прекращен, но вы можете попробовать
- поиск на GitHub как, например, в этот запрос для tryCatch в языке=R;
- Ohloh / Blackduck поиск кода например этот запрос для tryCatch в R файлах
- the Debian поисковая система кода поверх всего архива Debian
просто для записи, есть также
tryноtryCatchможет быть предпочтительнее. Я попробовал быстрый подсчет в Google Code Search, но try получает слишком много ложных срабатываний для самого глагола-но кажетсяtryCatchболее широко используется.
этот результат от связанного поиска google помог мне:http://biocodenv.com/wordpress/?p=15.
for(i in 1:16){ result <- try(nonlinear_modeling(i)); if(class(result) == "try-error") next; }
функция перезапуска очень важна в R, унаследованном от Lisp. Это полезно, если вы хотите вызвать некоторую функцию в теле цикла, и вы просто хотите, чтобы программа продолжалась, если вызов функции сворачивается. Попробуйте этот код:
for (i in 1:20) withRestarts(tryCatch( if((a <- runif(1))>0.5) print(a) else stop(a), finally = print("loop body finished!")), abort = function(){})
функции
trycatch()это довольно прямо вперед, и есть много хороших учебников по этому. Отличное объяснение обработки ошибок в R можно найти в книге Хэдли Уикхема Advanced-R, и то, что следует очень основное вступление кwithCallingHandlers()иwithRestarts()в качестве несколько слов, как это возможно:допустим, программист низкого уровня пишет функцию для вычисления Абсолюта значение. Он не знает, как его вычислить, но знает как чтобы построить ошибка и старательно передает свою наивность:
low_level_ABS <- function(x){ if(x<0){ #construct an error negative_value_error <- structure( # with class `negative_value` class = c("negative_value","error", "condition"), list(message = "Not Sure what to with a negative value", call = sys.call(), # and include the offending parameter in the error object x=x)) # raise the error stop(negative_value_error) } cat("Returning from low_level_ABS()\n") return(x) }программист среднего уровня также пишет функцию для вычисления абсолютного значения, используя прискорбно неполный
Comments