Roxygen、软件包构建和use.Rd2=TRUE

4

我有一个简单的shell脚本,用于构建我的Roxygen文档,构建软件包,检查,然后在我的计算机上安装新构建的软件包。它非常简单:

#! /bin/sh
R CMD roxygen -d myPackage 
R CMD build myPackage/
R CMD check myPackage_0.01.tar.gz
R CMD INSTALL myPackage myPackage_0.01.tar.gz 

但我在使用Roxygen时遇到了问题,它无法识别我的.onLoad()函数,就像之前在StackOverflow上描述的那样。解决方案是在roxygenize中使用use.Rd2=TRUE选项。由于我想要从命令提示符构建,所以我更改了这行代码。

R CMD roxygen -d myPackage 

将以下行推送一个roxygenize行到R中:

echo 'require("roxygen"); roxygenize("myPackage", roxygen.dir="myPackage",
   copy.package=FALSE, use.Rd2=TRUE)' | R --no-save < /dev/stdin

这似乎很好用。但感觉有点复杂。有更简单和/或更优雅的方法吗?

如果它能正常工作,那有什么不喜欢的呢? - Dirk Eddelbuettel
我记得曾经通过手动编辑JAVA_HOME环境变量来解决rJava问题。虽然这样做起作用了,但似乎并不是最佳选择。因此,我想确保自己不会重复类似的错误。 - JD Long
1
我使用一个Makefile来执行基本相同的操作。就像Dirk所说,如果它可以工作,那就没问题了...但是如果出现问题,一些程序员通常会尝试修复它。 :p - Sharpie
2个回答

2

我也做类似的事情,但我使用shell脚本中的HERE文档使其看起来更干净。

#!/bin/sh
##
##
## Must be run from the parent of the package directory (no options
## to change target of check or tarball!?!)

PACKAGE="analyzeNMON"
VERSION=$(awk -F": +" '/^Version/ { print $2 }' ${PACKAGE}/DESCRIPTION)

R --no-restore --slave <<EOR
  library(roxygen)
  roxygenize(package.dir="${PACKAGE}",
             roxygen.dir="${PACKAGE}",
             use.Rd2=TRUE,
             overwrite=TRUE,
             copy.package=FALSE,
             unlink.target=FALSE)
EOR

R CMD build ${PACKAGE}
R CMD check ${PACKAGE}_${VERSION}.tar.gz
R CMD INSTALL ${PACKAGE}_${VERSION}.tar.gz

这段代码与在运行R CMD roxygen脚本时非常相似。

我系统上安装的roxygen(版本0.1,上周从CRAN安装)似乎不支持上述提到的-s选项...


2

也许使用R CMD roxygen -s选项会有所帮助。我相信它实际上等同于在roxygenize函数中设置use.Rd2=TRUE


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