Come scrivere la tua prima funzione trycatch() in r


È possibile utilizzare una funzione tryCatch() in R per restituire il valore di un’espressione o produrre un messaggio personalizzato se viene rilevato un avviso o un errore.

Questa funzione utilizza la seguente sintassi di base:

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

Gli esempi seguenti mostrano come utilizzare nella pratica una funzione tryCatch() .

Esempio: creare una funzione tryCatch() in R

Supponiamo di creare la seguente funzione tryCatch() che tenta di prendere il logaritmo di un valore e quindi di dividerlo per un secondo valore.

Se si verifica un errore, visualizzeremo il messaggio “Si è verificato un errore” e quindi stamperemo l’errore su R.

Se si verifica un avviso, genereremo il messaggio “Si è verificato un avviso”, stamperemo l’avviso su R e quindi restituiremo un valore NA.

Se non si verificano errori o avvisi, restituiremo semplicemente il risultato della funzione.

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

Eseguiamo questa funzione in diversi scenari.

Scenario 1: non si verificano errori o avvisi.

Il codice seguente illustra come utilizzare la funzione in uno scenario in cui non si verificano errori o avvisi.

 #run function
log_and_divide(10, 2)

[1] 1.151293

Poiché non si verificano errori o avvisi, la funzione restituisce semplicemente il risultato dell’espressione, che risulta essere 1.151293 .

Scenario 2: si verifica un errore.

Il codice seguente mostra come utilizzare la funzione in uno scenario in cui si verifica un errore:

 #run function
log_and_divide(10)

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

Dato che abbiamo fornito un solo argomento alla funzione, riceviamo il messaggio che dice ” Si è verificato un errore ” e vediamo anche l’errore esatto prodotto da R.

Scenario 3: si verifica un avviso.

Il codice seguente mostra come utilizzare la funzione in uno scenario in cui si verifica un avviso:

 #run function
log_and_divide(-10, 2)

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

Poiché abbiamo fornito un valore negativo per il primo argomento, R non è in grado di calcolare il logaritmo di un valore negativo, quindi riceviamo il messaggio che dice ” Si è verificato un avviso “, vediamo l’esatto avviso prodotto da R e la funzione restituisce NA come ha valore negativo. risultato.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in R:

Come creare un ciclo For nidificato in R
Come aggiungere valori a un vettore utilizzando un loop in R
Come restituire il valore di una funzione in R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *