Как написать свою первую функцию trycatch() в r
Вы можете использовать функцию tryCatch() в R для возврата значения выражения или создания специального сообщения в случае возникновения предупреждения или ошибки.
Эта функция использует следующий базовый синтаксис:
my_function <- function (x, y){ tryCatch ( #try to do this { #some expression }, #if an error occurs, tell me the error error= function (e) { message(' An Error Occurred ') print(e) }, #if a warning occurs, tell me the warning warning= function (w) { message(' A Warning Occurred ') print(w) return (NA) } ) }
Следующие примеры показывают, как использовать функцию tryCatch() на практике.
Пример. Создайте функцию tryCatch() в R.
Допустим, мы создаем следующую функцию tryCatch() , которая пытается получить журнал одного значения, а затем разделить его на второе значение.
Если произойдет ошибка, мы выведем сообщение «Произошла ошибка», а затем выведем сообщение об ошибке в R.
Если возникает предупреждение, мы выведем сообщение «Произошло предупреждение», распечатаем предупреждение в R, а затем вернем значение NA.
Если ошибок и предупреждений не возникнет, мы просто вернем результат функции.
log_and_divide <- function (x, y){
tryCatch (
{
result = log(x) / y
return (result)
},
error= function (e) {
message(' An Error Occurred ')
print(e)
},
warning= function (w) {
message(' A Warning Occurred ')
print(w)
return (NA)
}
)
}
Давайте запустим эту функцию в разных сценариях.
Сценарий 1: Ошибок и предупреждений не возникает.
Следующий код показывает, как использовать эту функцию в сценарии, в котором не возникает ошибок или предупреждений.
#run function
log_and_divide(10, 2)
[1] 1.151293
Поскольку ошибок и предупреждений не возникает, функция просто возвращает результат выражения, которым оказывается 1,151293 .
Сценарий 2: Возникает ошибка.
Следующий код показывает, как использовать эту функцию в случае возникновения ошибки:
#run function
log_and_divide(10)
An Error Occurred
<simpleError in doTryCatch(return(expr), name, parentenv, handler):
argument "y" is missing, with no default>
Поскольку мы предоставили функции только один аргумент, мы получаем сообщение « Произошла ошибка », а также видим точную ошибку, вызванную R.
Сценарий 3: появляется предупреждение.
Следующий код показывает, как использовать эту функцию в случае возникновения предупреждения:
#run function
log_and_divide(-10, 2)
A Warning Occurred
<simpleWarning in log(x): NaNs produced>
[1] NA
Поскольку мы указали отрицательное значение для первого аргумента, R не может вычислить журнал отрицательного значения, поэтому мы получаем сообщение « Произошло предупреждение », мы видим точное предупреждение, выданное R, и функция возвращает NA как имеет отрицательное значение. результат.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в R:
Как создать вложенный цикл For в R
Как добавить значения в вектор с помощью цикла в R
Как вернуть значение функции в R