2012-01-22 13 views
7

Piszę skrypt, który używa roxygen2 do automatycznego zamaskowania mojego pakietu. Chciałbym, aby był wykonywalnym, aby mógł być częścią większego skryptu do przygotowania i instalacji pakietu, ale nie mogę sprawić, żeby działał z Rscript z jakiegoś powodu.Nie można wywołać funkcji roxygenize z pliku wsadowego Rscript

Oto kod:

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

To działa prawidłowo, jeśli zacznę interaktywną sesję R lub przesłać kod za pomocą R CMD partii. Jednak otrzymuję to wyjście i błąd, jeśli uruchomię skrypt bezpośrednio jako plik wykonywalny przez Rscript (i otrzymam błąd niezależnie od tego, czy skrypt znajduje się w bieżącym katalogu lub w 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 

Wygląda na to, że setPackageName znajduje się w bazie R, więc nie wiem, dlaczego jej nie ma. Dodatkowo używam Rscript w wielu innych sytuacjach i wydaje mi się, że to jedyne miejsce, w którym się nie udaje.

Każda pomoc jest doceniana.

+5

To był błąd w tlenie. Dopóki nie pojawi się kolejna wersja, obejmij ją, jawnie ładując metody i narzędzia. – hadley

+0

Dzięki, Hadley. Nie wiedząc dlaczego doprowadzało mnie to do szału. –

Odpowiedz

5

Należy jawnie załadować pakiety methods i utils przed załadowaniem roxygen2 i wywoływaniem roxygenize().

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

Pracowałem jak czar, dzięki! – dardisco

Powiązane problemy