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