Як написати вашу першу функцію 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *