Невозможно вызвать функцию roxygenize из пакетного файла Rscript

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

Вот код:

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

Это работает правильно, если я запускаю интерактивный сеанс R или отправляю код с помощью R CMD BATCH. Однако я получаю этот вывод и ошибку, если запускаю скрипт напрямую как исполняемый файл через Rscript (и я получаю ошибку независимо от того, находится ли скрипт в текущем каталоге или в корзине).

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 во многих других ситуациях, и это, кажется, единственное место, где он не работает.

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


person Erik Shilts    schedule 22.01.2012    source источник
comment
Это была ошибка в roxygen. Пока не выйдет следующая версия, обойдите это, явно загрузив методы и утилиты.   -  person hadley    schedule 23.01.2012
comment
Спасибо, Хэдли. Незнание почему сводило меня с ума.   -  person Erik Shilts    schedule 23.01.2012


Ответы (1)


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

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