Comment arrêter / terminer / arrêter un script dans R?
J'ai écrit un script qui devrait arrêter l'exécution si les données fournies sont incorrectes. Cependant, bien que stop
produit un message d'erreur, le script continue, tout simplement. Un exemple minimal:
if (TRUE) {stop("End of script?")} #It should stop here
print("Script did NOT end!") # but it doesn't, because this line is printed!
Sortie de la Console:
> if (TRUE) {stop("End of script?")}
Error: End of script?
> print("Script did NOT end!")
[1] "Script did NOT end!"
>
Ce n'est effectivement pas surprenant, car à partir de ?stop
:
arrête l'exécution de l'expression actuelle et exécute une action d'erreur.
De sorte qu'il se termine seulement l'expression actuelle, pas le script. J'ai trouvé ici que vous pouvez envelopper {} autour de la total script (ou le mettre dans une fonction), mais qui semble plutôt une solution de contournement qu'une solution. Bien sûr, il est bien pratique pour détecter les erreurs et de les manipuler hors de vous-même (voir par exemple le lien en commentaire de mra68), mais je voudrais quand même savoir si je peux arrêter un script en R.
J'ai aussi essayé de return
et break
mais cela ne fonctionne que dans une fonction ou d'une boucle. J'ai cherché sur d'autres mots clés tels que "s'arrêter" et "fin", mais pas de chance. Je me sens un peu stupide, car elle semble être une question très simple.
Alors, est-il une commande qui peut faire mon script d'arrêt/stop/fin avec une erreur fatale ?
Je suis en cours d'exécution de la R 3.2.3 sur Windows 8, mais a eu le même problème avec R 3.0.1 au MAC-OSX.
> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=Dutch_Netherlands.1252 LC_CTYPE=Dutch_Netherlands.1252 LC_MONETARY=Dutch_Netherlands.1252
[4] LC_NUMERIC=C LC_TIME=Dutch_Netherlands.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_3.2.3
TEST SUR MAC OS, sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
locale:
[1] nl_NL.UTF-8/nl_NL.UTF-8/nl_NL.UTF-8/C/nl_NL.UTF-8/nl_NL.UTF-8
source d'informationauteur RHA
Vous devez vous connecter pour publier un commentaire.
Autant que j'ai pu trouver, il y a pas de commande unique qui s'arrête vraiment un script sur chaque plate-forme/version. Il y a plusieurs façons de le gérer:
Le mettre dans une fonction ou d'accolades:
OU évaluer l'erreur et le manipuler comme dans un if else construction:
OU (MODIFIER):
Une autre possibilité est d'appeler le script à partir d'un autre 'main' R-scipt, avec
source("MyScript.R")
. Ensuite, le script se termine. Cependant, cela supprime toutes les sorties, puis d'autres erreurs de la console.OU pour des opérations plus complexes, l'utilisation
tryCatch()
comme le montre icic'est peut-être un peu trop tard, mais j'ai récemment été confronté au même problème et trouver la solution la plus simple pour moi a été d'utiliser:
De
?quit
vous pouvez voir que:Vous pouvez alors décider de ne pas quitter R en cliquant sur "annuler" lorsque la boîte de message pop-up.
Espère que ça aide!