R シェルからパッケージをインストールする 質問する

R シェルからパッケージをインストールする 質問する

私は、R を使用して Hadoop ストリーミング用のリデューサーを実装しようとしています。ただし、R に組み込まれていない特定のライブラリ (dplyr など) にアクセスする方法を見つける必要があります。調査によると、次の 2 つのアプローチがあるようです。

(1) リデューサーコードで、必要なライブラリを一時フォルダにインストールします。セッションの終了時に、次のようにライブラリが破棄されます。

.libPaths(c(.libPaths(), temp <- tempdir()))
install.packages("dplyr", lib=temp, repos='http://cran.us.r-project.org')
library(dplyr)
...

ただし、このアプローチでは、インストールしようとしているライブラリの数に応じて、大幅なオーバーヘッドが発生します。そのため、ほとんどの時間はライブラリのインストールに費やされます (dplyr などの高度なライブラリには大量の依存関係があり、通常の R セッションでインストールするには数分かかります)。

したがって、事前にインストールする必要があるようです。これがアプローチ 2 につながります。

(2) 私のクラスターはかなり大きく、それを動作させるには Ansible のようなツールを使用する必要があります。そのため、ライブラリをインストールするための Linux シェル コマンドを 1 つ用意することを好みます。R CMD INSTALL...ただし、R コンソールでミラーを見つけてソース ファイルを取得し、1 つのコマンドでインストールするのではなく、ソース ファイルからパッケージをインストールするだけのように感じますinstall.packages()

シェルで 1 つのコマンド ラインを使用して R パッケージを非対話的にインストールする方法を教えていただけますか? (背景知識が乏しいため申し訳ありませんが、私が正しい哲学に従っていないと思われる場合は、このクラスター全体の R パッケージをどのように管理すべきかをコメントに自由に残してください。)

ベストアンサー1

要約

Rscript -e 'install.packages("drat", repos="https://cloud.r-project.org")'

ディスク上のdplyrカスタムの場所にインストールしようとしているとのことですが、パッケージはそれをサポートしていないことに注意してください。詳細は以下をご覧ください。libdplyrdplyr#4641


dratさらに、内部の CRAN のようなリポジトリ (またはによって作成tools::write_PACKAGES)で公開されたプライベート パッケージをインストールする場合は、repos引数を簡単に組み合わせて、CRAN からの依存関係を自動的に解決できます。

Rscript -e 'install.packages("priv.pkg", repos=c("cran.priv","https://cloud.r-project.org"))'

これは非常に便利な機能ですR リポジトリただし、本番環境での使用では、CRAN のパッケージをローカルにキャッシュして使用することをお勧めします。そうすれば、依存関係の破壊的な変更に驚かされることはありません。本番環境での R の取り扱いに関する質の高い情報については、WhyR2019 での Wit Jakuczun の講演を参照することをお勧めします。Rを企業内だけでなく、あらゆる分野の機械学習に活用する方法:スライドビデオ

おすすめ記事