Как написать свою первую функцию 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *