2010-08-02 4 views

Répondre

16

Recherchez les fonctions trace et browser, ce sont les outils de base de R pour le débogage. Dites que vous voulez modifier la source de la fonction foo, puis dire

trace("foo",edit=TRUE) 

ouvrira la source de foo dans l'éditeur pour vous de changer. Cependant, ceci est pour le débogage interactif; les fichiers sources des packages ne sont pas modifiés. Donc, une fois que vous avez trouvé le bogue, vous devez changer les fichiers source du paquet pour que le changement soit permanent.

+0

salut! J'ai téléchargé un paquet et je connais la fonction que je dois éditer - je ne peux pas le trouver parmi tous les fichiers. Quelle est la bonne façon de faire cela? Pourriez-vous me pointer dans la bonne direction? – vagabond

9

Une telle fonctionnalité est implémentée dans la version de développement de la R (16 juillet 2010):

Une nouvelle installation a été ajouté à r-devel pour l'expérimentation par les auteurs de paquets.

L'idée est d'insérer du code modifié à partir de la source du package dans le package en cours d'exécution sans réinstaller. Donc, on peut changer, tester, changer, etc dans une boucle rapide.

Le mécanisme consiste à évaluer certains fichiers de code source, en retournant un objet d'environnement qui est un instantané du code. A partir de cet environnement , des fonctions et des méthodes peuvent être insérées dans l'environnement du package de la session en cours. L'insertion utilise le mécanisme trace() , de sorte que le code d'origine peut être restauré.

La version en une seule étape est:

insertSource("mySourceFile.R", package = "myPackage", functions = "foo")

Voir cet article pour plus de détails: Inserting and testing revised functions in a package

3

Votre question de est-il un moyen facile pour moi d'éditer la source essayer et déboguer le problème? a la réponse évidente: Utilisez la source, Luke!

blotter est un package sur R-Forge d'où vous pouvez obtenir blotter sources here. C'est la façon standard de regarder Open Source et éventuellement l'aider avec une correction de bogue.

+1

Ok, comment faire? Normalement, je peux juste appeler 'bibliothèque', ce que je suppose que je ne serais pas capable de faire avec les sources. J'ai téléchargé la source, mais il y a presque 40 fichiers. Est-ce que je cours chaque source individuellement pour les inclure dans mon script? –

+3

@Ben McCann En supposant qu'il n'y a pas de code C ou FORTRAN, vous pouvez extraire les fichiers R, 'source()' et travailler à partir de là (chaque fois que vous changez le fichier, vous devez le copier ou le coller dans R). Une fois que tout fonctionne, vous pouvez copier les fichiers dans le fichier binaire du paquet et le construire. J'ai décrit un rapide développement étape par étape du paquet R dans un article de blog ici: http://danganothererror.wordpress.com/2010/07/23/building-an-r-package-under-windows-without- cc-or-fortran-code/ –

Questions connexes