我有一个简单的 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

到以下行,该行通过标准输入将 roxygenize 行推送到 R:
echo 'require("roxygen"); roxygenize("myPackage", roxygen.dir="myPackage",
   copy.package=FALSE, use.Rd2=TRUE)' | R --no-save < /dev/stdin

似乎 工作只是花花公子。但是感觉有点绕。有没有更简单和/或更优雅的方法?

最佳答案

我做了类似的事情,但我在 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 选项......

关于Roxygen、包构建和使用.Rd2=TRUE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4380849/

10-11 15:45