Обработка исключений в R [закрыт]



есть ли у кого-нибудь примеры/учебники по обработке исключений в R? Официальная документация очень лаконична.

539   5  

5 ответов:

помимо ответа Шейна, указывающего вам на другие обсуждения StackOverflow, вы можете попробовать функцию поиска кода. Этот оригинальный ответ указал на поиск кода Google с тех пор был прекращен, но вы можете попробовать

просто для записи, есть также 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

    Ничего не найдено.