4

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 

しかし、StackOverflowで前述したように、Roxygenが.onLoad()関数を取得する際に問題が発生します。解決策は、roxygenizeでuse.Rd2=TRUEオプションを使用することです。コマンドプロンプトからビルドしたいので、この行を変更しました

R CMD roxygen -d myPackage 

stdinを介してRへのroxygenizeラインを示す次のラインへ:

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

これはちょうどダンディに動作するようです。しかし、それは少し複雑に感じます。より簡単でエレガントな方法はありますか?

4

2 に答える 2

2

R CMD roxygen -sオプションがここで役立つかもしれません。use.Rd2=TRUE関数の設定と実質的に同じだと思いroxygenizeます。

于 2010-12-07T22:24:49.597 に答える
2

私は似たようなことをしますが、シェルスクリプトでヒアドキュメントを使用して見栄えを良くしています。

#!/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

私のシステム(バージョン0.1;今週CRANからインストールされた)にインストールされているroxygenは、-s上記のオプションをサポートしていないようです...

于 2010-12-24T02:08:00.620 に答える