7
votes

Littler de débogage / ridips

Comment puis-je déboguer rscripts qui sont exécutés à partir de la ligne de commande?

J'utilise actuellement le package getopt pour passer des options de ligne de commande, écrou quand il y a un bogue, c'est difficile pour moi de:

  1. Voir ce qui s'est mal tourné;
  2. débogage de manière interactive dans r (puisque le script attend les options de ligne de commande.)

    Quelqu'un a-t-il d'exemple de code et est prêt à partager?


0 commentaires

3 Réponses :


4
votes

I Utilisez soit des déclarations d'impression de vieille école, soit une analyse interactive. Pour cela, je sauvegine d'abord l'état à l'aide de Enregistrer () , puis chargez-le dans une session interactive (pour laquelle j'utilise EMACSS / ESS). Qui permet un travail interactif à l'aide du code de script sur une base ligne par ligne.

mais j'écris souvent / tester / déboguer le code en mode interactif avant de déployer dans un script de pastler.


0 commentaires

7
votes

Vous pouvez transmettre vos arguments de ligne de commande en une coque interactive avec-args, puis source ('') le script. xxx

Vous pouvez maintenant utiliser l'ancienne fonction de navigateur () à Débogage.


3 commentaires

J'ai essayé votre conseil et obtenu ceci :-( > R -I indiva12_aataag -d hmm_data / indiva12_aataag -c Tous les arguments de ligne de commande supplémentaires ("-i indiva12_aatag -c tous") ignorés


OK, NEWMIND, j'ai raté la partie où vous avez dit d'utiliser --Args.


Maintenant r ouvre mais je reçois cette erreur: > source ("msg / write-hmm-data.r ') erreur dans if (fichier ==" ") Fichier <- stdin () else {: argument est de longueur zéro>



3
votes

Une autre option consiste à fonctionner avec la fonctionnalité Options (Erreur). Voici un exemple simple: xxx

Vous pouvez créer comme étant élaboré un script comme vous le souhaitez sur une condition d'erreur, vous devez donc décider de décider quelles informations dont vous avez besoin pour le débogage.

Sinon, s'il existe des domaines spécifiques, vous vous préoccupez (par exemple, la connexion à une base de données), puis les envelopper dans une fonction trycatch ().


0 commentaires