2012-01-22 16 views
7

Sto scrivendo uno script che utilizza roxygen2 per il roxygenize automatico del pacchetto. Mi piacerebbe che fosse eseguibile in modo che possa essere parte di uno script più grande per preparare e installare il pacchetto, ma non posso farlo funzionare con Rscript per qualche motivo.Impossibile chiamare la funzione roxygenize dal file batch Rscript

Ecco il codice:

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

Ciò funziona correttamente se inizio una sessione interattiva R o se sottopongo il codice utilizzando R CMD LOTTO. Tuttavia, ottengo questo risultato ed errore se eseguo direttamente lo script come eseguibile tramite Rscript (e ottengo l'errore indipendentemente dal fatto che lo script si trovi nella directory o nel cestino corrente).

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 

Sembra setPackageName è a base di R, quindi non riesco a capire il motivo per cui non ci sia. Inoltre, utilizzo Rscript in molte altre situazioni e questo sembra essere l'unico posto in cui non riesce.

Qualsiasi aiuto è molto apprezzato.

+5

Questo era un bug nel roxygen. Fino a quando non verrà fuori la prossima versione, aggiratela caricando esplicitamente metodi e utilità. – hadley

+0

Grazie, Hadley. Non sapendo perché mi stava facendo impazzire. –

risposta

5

Caricare in modo esplicito i pacchetti methods e utils prima di caricare roxygen2 e chiamare roxygenize().

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

Ha funzionato come un fascino, grazie! – dardisco

Problemi correlati