2012-01-22 1 views
7

J'écris un script qui utilise roxygen2 pour roxygéniser automatiquement mon package. Je voudrais qu'il soit exécutable de sorte qu'il puisse faire partie d'un script plus grand pour préparer et installer le paquet, mais je ne peux pas le faire fonctionner avec Rscript pour une raison quelconque.Impossible d'appeler la fonction roxygenize à partir du fichier de commandes Rscript.

Voici le code:

#!/usr/bin/env Rscript 
library(roxygen2) 
roxygenize('.', copy=FALSE) 

Cela fonctionne correctement si je commence une session R interactive ou si je soumets le code en utilisant R CMD LOT. Cependant, j'obtiens cette sortie et erreur si j'exécute le script directement en tant qu'exécutable via Rscript (et j'obtiens l'erreur indépendamment du fait que le script soit dans le répertoire courant ou bin).

bin/roxygenize.R 
Loading required package: digest 
Warning message: 
package 'roxygen2' was built under R version 2.13.2 
Error in parse.files(r_files) : could not find function "setPackageName" 
Calls: roxygenize -> parse.files 
Execution halted 

Il ressemble à setPackageName est dans la base R, donc je ne peux pas comprendre pourquoi il est pas là. En outre, j'utilise Rscript dans beaucoup d'autres situations et cela semble être le seul endroit où il échoue.

Toute aide est très appréciée.

+5

C'était un bug dans roxygen. Jusqu'à ce que la prochaine version sorte, contournez-la en chargeant explicitement les méthodes et les utils. – hadley

+0

Merci, Hadley. Ne pas savoir pourquoi me rendait fou. –

Répondre

5

Charger explicitement les packages methods et utils avant de charger roxygen2 et d'appeler roxygenize().

#!/usr/bin/env Rscript 
library(methods) 
library(utils) 
library(roxygen2) 
roxygenize('.', copy=FALSE) 
+0

A travaillé comme un charme, merci! – dardisco

Questions connexes