web-dev-qa-db-ja.com

「R CMD INSTALL」を使用してRパッケージをインストールするときに依存関係をインストールする方法

最初のRパッケージを開発しています(R 2.13、Ubuntu 10.10を使用)。それをfooと呼び、R /ディレクトリ内のコードがlibrary(bar)行で始まるとしましょう、ここでbarはCRANの既存のパッケージであり、その上でfoo 依存します。 DESCRIPTIONファイルには次の行が含まれています。

Depends: bar

パッケージfooをテストする準備ができたら、次を使用してローカルにインストールします。

R CMD INSTALL foo_1.0.tar.gz

ただし、barがインストールされていない場合、次のように表示されます。

ERROR: dependency ‘bar’ is not available for package ‘foo’

明らかに、myfooがinstall.packages()を使用してCRANからインストールされた場合、barは同時にインストールされます。だから私の質問は:必要に応じて、パッケージをインストールするときに、CRANパッケージbarがインストールされていることを確認する方法fooR CMD INSTALLを使用しますか?これは構成スクリプトの仕事ですか?

41
neilfws

実際、R拡張機能ガイドを読み直しても、R CMD INSTALLがCRANから依存関係を取得するとは言えません。 R内のinstall.packages()メソッドはそれを行いますが、一見したところ、R CMD INSTALLはそうではないと思います。

Install.packagesを使用して.tar.gzからインストールできますが、repos = NULLを設定する必要があり、これが適用されます。

 dependencies: logical indicating to also install uninstalled packages
          on which these packages depend/suggest/import (and so on
          recursively).  Not used if repos = NULL.

私がすべきことは、DESCRIPTIONファイルから依存関係を取得し、クリーンな環境でビルドをテストするときにRを実行し、それらに対してinstall.packages()を実行することだと思います。

17
Spacedman

幸いにも Devtools は簡単な解決策を提供します:install_deps()

install_deps(pkg = "。"、依存関係=論理、スレッド= getOption( "Ncpus"、1))

引数:
pkg:パッケージの説明。パスまたはパッケージ名を指定できます。詳細については、「as.package」を参照してください

依存関係:「論理」は、この「パッケージ」が依存/アンインストール/提案するアンインストールパッケージもインストールすることを示します。 「install.packages」の引数「dependencies」を参照してください。

threads:依存関係のインストールに使用する同時スレッドの数。デフォルトでは、オプション「Ncpus」または設定されていない場合は「1」になります。

例:

 install_deps( "。")
 install_deps( "/ path/to/package"、dependencies = "logical")
17
igaurav

最終的にはbash here-documentを使用し、クラウドミラーを指定して依存関係を見つけました。

Sudo R --Vanilla <<EOF
install.packages('forecast', repos='http://cran.us.r-project.org')
q()
EOF

rパッケージは「予報」で、使用したクラウドミラーは http://cran.us.r-project.org でした。別のミラーを使用したい場合、ここにすべてあります: https://cran.r-project.org/mirrors.html

RパッケージをAWS EMR bootstrap= Shell script。

6
Jonathan Le

@Jonathan Leに似ていますが、スクリプトの使用に適しています:

Sudo R --Vanilla -e 'install.packages("forecast", repos="http://cran.us.r-project.org")'
2
Romain Rossi

これを行うメカニズムは、dependsファイルのDESCRIPTIONフィールドにエントリを追加することです。

Depends: bar

これは、既にインストールされている場合はbarライブラリーをロードし、そうでない場合はCRANからインストールします。

これは、Writing R extensionsマニュアルのセクション1.1.1で説明されています。 http://cran.r-project.org/doc/manuals/R-exts.html#The-DESCRIPTION-file =

0
Andrie