Comment écrire votre première fonction tryCatch() dans R
Vous pouvez utiliser une fonction tryCatch() dans R pour renvoyer la valeur d’une expression ou produire un message personnalisé si un avertissement ou une erreur est rencontré.
Cette fonction utilise la syntaxe de base suivante :
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) } ) }
Les exemples suivants montrent comment utiliser une fonction tryCatch() dans la pratique.
Exemple : créer une fonction tryCatch() dans R
Supposons que nous créions la fonction tryCatch() suivante qui tente de prendre le journal d’une valeur, puis de la diviser par une seconde valeur.
Si une erreur se produit, nous produirons le message « Une erreur s’est produite », puis imprimerons l’erreur dans R.
Si un avertissement se produit, nous produirons le message « Un avertissement s’est produit », imprimerons l’avertissement dans R, puis renverrons une valeur NA.
Si aucune erreur ou avertissement ne se produit, nous renverrons simplement le résultat de la fonction.
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)
}
)
}
Exécutons cette fonction dans différents scénarios.
Scénario 1 : aucune erreur ou avertissement ne se produit.
Le code suivant montre comment utiliser la fonction dans un scénario dans lequel aucune erreur ou avertissement ne se produit.
#run function
log_and_divide(10, 2)
[1] 1.151293
Puisqu’aucune erreur ou avertissement ne se produit, la fonction renvoie simplement le résultat de l’expression, qui s’avère être 1.151293 .
Scénario 2 : une erreur se produit.
Le code suivant montre comment utiliser la fonction dans un scénario où une erreur se produit :
#run function
log_and_divide(10)
An Error Occurred
<simpleError in doTryCatch(return(expr), name, parentenv, handler):
argument "y" is missing, with no default>
Puisque nous n’avons fourni qu’un seul argument à la fonction, nous recevons le message indiquant « Une erreur s’est produite » et nous voyons également l’erreur exacte produite par R.
Scénario 3 : un avertissement se produit.
Le code suivant montre comment utiliser la fonction dans un scénario où un avertissement se produit :
#run function
log_and_divide(-10, 2)
A Warning Occurred
<simpleWarning in log(x): NaNs produced>
[1] NA
Puisque nous avons fourni une valeur négative pour le premier argument, R est incapable de calculer le log d’une valeur négative, nous recevons donc le message indiquant « Un avertissement s’est produit », nous voyons l’avertissement exact produit par R et la fonction renvoie NA comme valeur négative. résultat.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans R :
Comment créer une boucle For imbriquée dans R
Comment ajouter des valeurs à un vecteur à l’aide d’une boucle dans R
Comment renvoyer la valeur d’une fonction dans R