无法从Rscript批处理文件调用roxygenize函数

7

我正在编写一个脚本,使用roxygen2自动化地生成我的软件包的roxygen注释。我希望它可以被执行,以便作为准备和安装软件包的更大脚本的一部分,但是我无法通过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,这似乎是唯一失败的地方。

非常感谢任何帮助。


5
这是roxygen中的一个bug。在下一个版本发布之前,通过显式加载methods和utils来解决该问题。 - hadley
谢谢,哈德利。不知道为什么一直让我疯狂。 - Erik Shilts
1个回答

5
在加载roxygen2并调用roxygenize()之前,需要明确加载methodsutils包。
#!/usr/bin/env Rscript
library(methods)
library(utils)
library(roxygen2)
roxygenize('.', copy=FALSE)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接