Невозможно вызвать функцию roxygenize из командного файла Rscript - PullRequest
7 голосов
/ 23 января 2012

Я пишу скрипт, который использует roxygen2 для автоматической оксигенации моего пакета. Мне бы хотелось, чтобы он был исполняемым, чтобы он мог быть частью более крупного сценария для подготовки и установки пакета, но я по какой-то причине не могу заставить его работать с Rscript.

Вот код:

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

Это работает правильно, если я начинаю интерактивный R-сеанс или если я отправляю код, используя R CMD BATCH. Однако, я получаю эти выходные данные и ошибку, если я запускаю сценарий напрямую как исполняемый файл через Rscript (и я получаю сообщение об ошибке независимо от того, находится ли сценарий в текущем каталоге или в папке 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

Похоже, setPackageName находится в базе R, поэтому я не могу понять, почему его там нет. Кроме того, я использую Rscript во многих других ситуациях, и это, кажется, единственное место, где он терпит неудачу.

Любая помощь очень ценится.

1 Ответ

5 голосов
/ 26 сентября 2012

Явно загружайте пакеты methods и utils перед загрузкой roxygen2 и вызовом roxygenize().

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