attraper une erreur, puis la logique
Comment puis-je écrire R code qui me permet d'exécuter un chemin différent dans mon code si une condition d'erreur se produit? Je suis à l'aide d'une fonction qui tend à jeter une erreur. Quand il rencontre une condition d'erreur, je voudrais exécuter une fonction différente. Voici un exemple précis:
require(SuppDists)
parms <- structure(list(gamma = -0.841109044800762, delta = 0.768672140584442,
xi = -0.359199299528801, lambda = 0.522761187947026, type = "SB"), .Names = c("gamma",
"delta", "xi", "lambda", "type"))
pJohnson(.18, parms)
la pJohnson fonction doit échouer avec l'erreur suivante:
Error in pJohnson(0.18, parms) :
Sb values out of range.
Je peux faire l'erreur d'aller silencieuse à l'aide de:
try( pJohnson(.18, parms), silent=T)
mais ce que je veux vraiment faire est d'exécuter la fonction alternativeFunction()
si pJohnson(.18, parms)
renvoie une erreur.
Il semble que la withCallingHandlers()
fonction devrait m'aider, mais je ne peux pas comprendre comment capturer l'erreur et de faire fonctionner le alternativeFunction()
seulement à une condition d'erreur.
Vous devez vous connecter pour publier un commentaire.
if (inherits(t, "try-error")) alternativeFunction()
est une belle alternative qui est encore plus "objecty" que la%in%
.Une autre option pourrait être d'utiliser un
tryCatch
expression. Voici un exemple:Vous pouvez faire ce que vous voulez à l'intérieur de l'erreur de bloc, donc dans votre cas, quelque chose comme cela devrait fonctionner:
Ce n'est pas vraiment le but de l'utilisation de l'erreur, mais c'est un peu plus concis.