Pouvez-vous faire R imprimer plus détaillée des messages d'erreur?
J'ai souvent été frustré par R cryptique des messages d'erreur. Je ne parle pas au cours d'une session interactive, je veux dire quand vous êtes en cours d'exécution d'un script. Les messages d'erreur ne pas imprimer les numéros de ligne, et il est souvent difficile de tracer la ligne incriminée, et la raison de l'erreur (même si vous pouvez trouver l'emplacement).
Plus récemment, mon script R a échoué avec l'incroyablement perspicace message: "l'Exécution est arrêtée." La façon dont j'ai l'habitude de trace de telles erreurs, c'est en mettant beaucoup d'imprimer les relevés tout au long du script -- mais c'est une douleur. J'ai parfois de passer par le script ligne par ligne dans une session interactive pour trouver l'erreur.
Quelqu'un aurait-il une meilleure solution pour savoir comment faire R la sortie d'erreur de plus d'information?
EDIT: de Nombreuses R-débogage des choses de travail pour les sessions interactives. Je suis à la recherche pour obtenir de l'aide sur les scripts de ligne de commande exécuter par le biais de Rscript. Je ne suis pas dans le milieu de la R de session lorsque l'erreur se produit, je suis dans le shell bash. Je ne peux pas courir "traceback()"
- Regarder en décharge.les cadres. Permet de manière interactive déboguer un script batch après il a échoué.
- il y a eu aucun mouvement sur celui-ci? Je vais avoir le même combat et c'est insupportable..
- Je ne crois pas qu'il existe une réponse satisfaisante à ce problème encore.
Vous devez vous connecter pour publier un commentaire.
Essayer certaines des suggestions dans ce post:
Suggestions générales pour le débogage dans la R
Plus précisément,
findLineNum()
ettraceback()
/setBreakpoint()
.options(error=recover)
oudebugonce
peut être utile.@Nathan Bien ajouter cette ligne
sink(stdout(), type="message")
au début du script, et vous devriez obtenir dans le message de la console à la fois le contenu des scripts et de sortie avec message d'erreur, donc vous pouvez voir que dans le mode interactif dans la console. (vous pouvez également rediriger vers un fichier de log si vous préférez garder la console "propre")Ont un coup d'oeil à mon paquet
tryCatchLog
(https://github.com/aryoda/tryCatchLog).Alors qu'il est impossible d'améliorer la R des messages d'erreur directement, vous pouvez économiser beaucoup de temps en identifiant le code exact de la ligne de l'erreur et des variables au moment de l'erreur stockés dans une décharge pour "post mortem" analyse!!!
Les principaux avantages de la
tryCatchLog
fonction detryCatch
sontCela permettra de montrer plus en détail traceback, mais pas le numéro de la ligne:
Un chemin à l'intérieur d'un script pour obtenir plus d'informations sur l'endroit où l'erreur s'est produite est de rediriger R-message pour le même flux que les erreurs :
Cette façon, vous obtenez des messages et des erreurs dans la même sortie de sorte que vous voyez la ligne a déclenché l'erreur...