Roxygen,包构建和使用.Rd2 = TRUE

时间:2010-12-07 19:40:40

标签: r roxygen

我有一个简单的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()函数作为described previously on StackOverflow时遇到了问题。解决方案是使用带有roxygenize的use.Rd2 = TRUE选项。好吧,我想从命令提示符构建,所以我改变了这一行

R CMD roxygen -d myPackage 

到下一行,它通过stdin将一条roxygenize线推到R:

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

这个似乎只是花花公子。但感觉有点复杂。是否有更简单和/或更优雅的方式?

2 个答案:

答案 0 :(得分:2)

可能是R CMD roxygen -s选项在这里有帮助。我认为它与在use.Rd2=TRUE函数中设置roxygenize实际上相同。

答案 1 :(得分: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代码与R CMD roxygen期间运行的脚本非常相似。

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