【问题标题】:Roxygen, package building, and use.Rd2=TRUERoxygen、包构建和使用。Rd2=TRUE
【发布时间】:2010-12-07 19:40:40
【问题描述】:

我有一个简单的 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 时遇到问题。解决方案是将 use.Rd2=TRUE 选项与 roxygenize 一起使用。好吧,我想从命令提示符构建,所以我更改了这一行

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

似乎很管用。但是感觉有点绕。有没有更简单和/或更优雅的方法?

【问题讨论】:

  • 如果有效,有什么不喜欢的?
  • 我记得有一次通过手动编辑 JAVA_HOME 环境变量来修复 rJava 问题。虽然这有效,但似乎不是最理想的。所以我想我会确保我不会重复类似的错误。
  • 我使用了一个基本上执行相同操作的 Makefile。就像 Dirk 说的,如果它有效,它就有效……但如果它没有损坏,一些程序员通常会尝试修复它。 :p

标签: r roxygen


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我没有意识到这一点。谢谢!
    猜你喜欢
    • 2013-10-27
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多