2010-08-04 7 views
0

Je voudrais réparer un paquet, mais je ne sais pas comment le modifier. Je peux download the source from R-Forge comme un .tar.gz et décompressez-le. Il y a un répertoire "R" avec la source et aussi un répertoire "tests".Comment réparer un bogue dans un paquet R open source?

Comment inclure les sources dans mon propre projet pour tester mes modifications?

Comment exécuter les tests? Les tests commencent chacun avec "library (buvard)". Comment puis-je charger la bibliothèque à partir des sources que j'ai téléchargées.

+0

En rapport http://stackoverflow.com/questions/3384598/how-to-edit-r-library-sources? – Marek

Répondre

-2

Je trouve que je pouvais charger toutes les sources pour me sauver du ridicule remballage en faisant:

for (file in dir("../R", pattern="*.R", full.names=TRUE)) { 
    source(file) 
} 
+4

Une fonction similaire est incluse dans les exemples de '? Source' ... mais je n'aide vraiment pas puisque vous savez comment lire le manuel, non? –

0

Ce que j'ai fait est le suivant (IIRC) enlever l'ancien paquet remove.packages. Re zip votre nouveau paquet dans un fichier tar.gz (avec vos sources modifiées). Installez le nouveau package avec install.packages avec pkg = chemin vers votre bibliothèque compressée, et repos = NULL.

+0

wow. c'est une douleur incroyable. est-il possible de le faire sans devoir continuellement compresser mon code source après chaque changement? –

+5

Vous avez un ordinateur, automatisez-le. – deinst

4

Le processus recommandé est décrit en détail dans le manuel 'Writing R Extensions' fourni avec votre installation R.

Il existe également de nombreux didacticiels sur le Web.

+2

@Ben McCann: Il ne vous a pas dit de RTFM, il vous a indiqué le bon ... – nico

+0

Hehe, je vais essayer d'être moins brutal la prochaine fois. J'apprécie l'aide. Ce qui est génial avec le débordement de pile, c'est que vous pouvez obtenir des réponses précises à des questions rapides. J'apprécie les pointeurs vers des sections spécifiques du manuel avec peut-être un extrait inclus: o) Moins utile est oh c'est quelque part dans ces 141 pages. –

+6

Si vous appréciez l'aide, votez pour la réponse. Et rassurez-vous, vous devrez lire plus de 141 pages si vous voulez mettre R à bon escient. Beaucoup plus. –

2

Pas besoin de re-zip la source. Il suffit de charger à nouveau le paquet de la source sur votre disque:

install.packages(/path/to/package, repos = NULL, type="source") 

votre méthode de faire la boucle en boucle à travers les fichiers R fonctionnera dans certaines situations, mais dans d'autres, il ne peut pas. Par exemple, s'il existe du code non R compilé, la mise en boucle sur les fichiers * .R peut ne pas fonctionner correctement. Il est donc généralement préférable d'installer à nouveau install.packages(). Par ailleurs, si vous clonez un repo de contrôle de version sur votre disque dur, vous n'obtenez généralement pas le fichier zip. Donc, la même méthode est utilisée pour installer.

0

Quand je fais des tests sur un paquet, utiliser un petit script bash qui ressemble à ceci:

#!/bin/bash 
#build the package from source 
R CMD build ../pkgdirectory/ 
#remove the old version and install the new one 
R CMD REMOVE pkgname 
R CMD INSTALL pkgname_0.7.tar.gz 

Remplacer le nom du paquet avec les noms appropriés. Enregistrez-le en tant que "make", puis exécutez-le chaque fois que vous avez terminé une modification majeure. Ensuite, vos scripts de test peuvent utiliser library (pkgname) comme d'habitude.

+0

Vous pouvez ignorer l'étape de suppression; C'est fait pour vous l'installation qui suit. Vous pouvez cependant ajouter une étape 'R CMD check', basée sur l'archive que vous avez créée. –

+0

Merci pour le conseil de suppression.Oui, j'inclus souvent le chèque, surtout dans les premières étapes de la mise en place d'un paquet, mais quand je ne fais que peaufiner le code, je passe cette étape car cela prend du temps. – chrisamiller

Questions connexes