Jak napisać swoją pierwszą funkcję trycatch() w r


Możesz użyć funkcji tryCatch() w R, aby zwrócić wartość wyrażenia lub wygenerować niestandardowy komunikat w przypadku napotkania ostrzeżenia lub błędu.

Ta funkcja wykorzystuje następującą podstawową składnię:

 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)
        }
    )
}

Poniższe przykłady pokazują, jak w praktyce używać funkcji tryCatch() .

Przykład: Utwórz funkcję tryCatch() w R

Załóżmy, że tworzymy następującą funkcję tryCatch() , która próbuje pobrać log jednej wartości, a następnie podzielić go przez drugą wartość.

Jeśli wystąpi błąd, wyświetlimy komunikat „Wystąpił błąd”, a następnie wydrukujemy błąd w R.

Jeśli pojawi się ostrzeżenie, wyświetlimy komunikat „Wystąpiło ostrzeżenie”, wydrukujemy ostrzeżenie do R, a następnie zwrócimy wartość NA.

Jeśli nie wystąpią żadne błędy ani ostrzeżenia, po prostu zwrócimy wynik funkcji.

 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)
        }
    )
}

Uruchommy tę funkcję w różnych scenariuszach.

Scenariusz 1: Nie występują żadne błędy ani ostrzeżenia.

Poniższy kod pokazuje, jak używać tej funkcji w scenariuszu, w którym nie występują żadne błędy ani ostrzeżenia.

 #run function
log_and_divide(10, 2)

[1] 1.151293

Ponieważ nie występują żadne błędy ani ostrzeżenia, funkcja po prostu zwraca wynik wyrażenia, który okazuje się wynosić 1.151293 .

Scenariusz 2: Wystąpił błąd.

Poniższy kod pokazuje, jak używać tej funkcji w scenariuszu, w którym wystąpi błąd:

 #run function
log_and_divide(10)

An Error Occurred
<simpleError in doTryCatch(return(expr), name, parentenv, handler):
  argument "y" is missing, with no default>

Ponieważ podaliśmy tylko jeden argument funkcji, otrzymujemy komunikat „ Wystąpił błąd ” i widzimy także dokładny błąd wygenerowany przez R.

Scenariusz 3: Występuje ostrzeżenie.

Poniższy kod pokazuje, jak używać tej funkcji w scenariuszu, w którym pojawia się ostrzeżenie:

 #run function
log_and_divide(-10, 2)

A Warning Occurred
<simpleWarning in log(x): NaNs produced>
[1] NA

Ponieważ podaliśmy wartość ujemną dla pierwszego argumentu, R nie jest w stanie obliczyć logu wartości ujemnej, więc otrzymujemy komunikat „ Wystąpiło ostrzeżenie ”, widzimy dokładne ostrzeżenie wygenerowane przez R i funkcja zwraca NA jako ma wartość ujemną. wynik.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w języku R:

Jak utworzyć zagnieżdżoną pętlę For w R
Jak dodać wartości do wektora za pomocą pętli w R
Jak zwrócić wartość funkcji w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *