Comment «lancer» une erreur dans R? J'ai une fonction qui prend un bloc de données et quelques noms de colonnes et fait des trucs avec eux. Si les colonnes n'existent pas, je veux que la fonction s'arrête et arrête toutes les fonctions qui en dépendent.
J'ai regardé recover
et browse
et traceback
mais, eh bien, ils semblaient proches mais pas ce que je cherchais.
r
error-handling
fourchette et attendre
la source
la source
Réponses:
Voir
help(tryCatch)
:et plus tard sous 'Voir aussi':
donc vous voulez probablement
stop
.la source
traceback()
après l'erreur pour voir ce qui ne va pas). Utiliserstop
enerror
argument detryCatch
va gâcher la trace. Cependant, l'finally
argument permettra de lancer un message supplémentaire et de garder la trace utile. Pas exactement sur le sujet, mais, je pense, assez important pour justifier quelques inconvénients et une menace de modération expulsant ce commentaire de la fenêtre. :-)Exemple simple:
la source
Au-delà des fonctions de base que Dirk mentionne:
Le paquet R.oo a des fonctionnalités supplémentaires de gestion des exceptions, y compris une fonction throw () qui est très utile. Vous pouvez intercepter des exceptions avec les fonctions try ou trycatch habituelles:
Vous pouvez en savoir plus ici: http://www1.maths.lth.se/help/R/R.oo/
la source
plot
trace une fonction,try
stop
warn
tout fonctionne comme prévu, et presque tout ce que je veux faire est une ligne unique.En fait, la fonction
stopifnot
est très pratique pour implémenter des vérifications de cohérence dans votre code. Il prend plusieurs expressions logiques et renvoie une erreur si l'une d'elles est évaluée à false.Exemple: pour vérifier si la colonne 'c' existe dans le dataframe 'df':
Cela lancera l'erreur suivante:
la source
assert(...)
...Vous pouvez vérifier si la colonne existe et faire ce que vous voulez.
Supposons une colonne
data.frame
nomméedf1
et vérifiant si une colonnecol1
existe:ou
Par exemple
la source