R-2.14にアップグレードする前に、インストールしたパッケージのフォルダー構造を合理化する機会を利用したいと思います。
現時点では、Rのデフォルトを使用しています。つまり、新しくインストールされたすべてのパッケージはR_LIBS_USERに移動します。しかし、私は実際に2つのクラスのパッケージを区別しています。
plyr
、data.table
など。install.packages
はlib
引数を指定するオプションを提供するため、これは明らかに可能です。
パッケージの場所を管理する簡単な方法はありますか? .RProfile
またはRProfile.Site
でいくつかの賢明な設定/ラッパー関数を作成することによって?
Hadleyの優れたパッケージdevtools
は、関数dev_mode
を提供します。
http://www.inside-r.org/packages/cran/devtools/docs/dev_mode
ここで使用例を見つけることができます: https://Gist.github.com/1150934
基本的に、
dev_mode(TRUE, path = "anywhere-you-want-to-install")
install.packages("anything-that-you-want-to-install")
強力な方法です。
そのための多くのオプションがあります。私が最初にしたことは、Rprofile.siteを次の行を含むように調整し、デフォルトのライブラリパスをRインストールに含まれていないディレクトリにすることでした。
_ .libPaths(c("D:/R/Library",.libPaths()))
_
これにより、他のパスを失うことなく、_D:/R/Library
_がデフォルトのパスになります。そのパスに2つのパス、たとえば_D:/R/Library/Work
_と_D:/R/Library/Test
_を追加できます。最初の位置に配置されるものは、install.packages()
でlibを指定しない場合に使用されるデフォルトのものです。
次に、.Rprofile.siteで2つの変数を割り当てることができます。これらはベース名前空間で割り当てられるため、常にアクセス可能であり、ls()によって削除されることはありません。何かのようなもの
_ .libwork <- 'D:/R/Library/Work'
.libtest <- 'D:/R/Library/Test'
_
これにより、次のようなパッケージをインストールできます。
_ install.packages('aPackage',lib=.libwork)
_
私が推測する他のオプションもありますが、これは私が転がる方法です。
環境変数R_LIBSのパスのコロンで区切られたリストを介して、いくつかのライブラリパス/ツリーを指定できるはずです。これをR2.13.1パッチで確実に機能させることができませんでした-最初のエントリのみを取得します。 _R_LIBS
_と_R_LIBS_USER
_をシステムで確実に動作させることができました。通常は前者のみを設定します。
.libPaths()
は、検索されたライブラリツリーのセットに新しいパスを追加できます。 _.Rprofile
_の.libPaths(new)
に適切な呼び出しを追加して、各セッションに関連するツリーを追加します。次に、インストール時にパッケージをインストールする場所、つまり使用するツリーを選択できます。
答えるために、私は少し文脈を与えなければなりません。
再現性を高めるために、Rのセットアップ全体を含めてスクリプトを作成しようとしています。私は、とりわけパッケージをインストールするスクリプト「initializeR.r」を持っており、キャッシュに関連するもの、視覚化、サンプリング、空間統計などに関連するものなど、パッケージをバンドルに配置しました-私自身の小さな必要に応じて、タスクビュー。
たとえば、ここにスニペットがあります:
# Profiling & testing
Packages$CodingTools = c("codetools","debug", "profr","proftools","RUnit")
一部のバンドルを「メジャー」パッケージ(またはプライマリ)リストに結合し、その他のバンドルを「セカンダリ」リストに結合します。プライマリリストにすべてをインストールすることは確実です。これらは、適切なR環境を持ち、独自のスクリプト、関数、パッケージなどを使用するために必要です(ところで、一部のパッケージは複数のバンドルに割り当てられていますが、ごくわずかです。集約リストを処理する前に重複排除します。)
次に、プラットフォーム固有のデフォルトライブラリを指定し、そこにインストールします。ただし、この機能は拡張可能であり、このアイデアを拡張して、各パッケージバンドル(またはパッケージ)のオプションの場所を含めることができます。バンドル名からマップするだけです。 「CodingTools」を一意のディレクトリ(ライブラリパス)に移動します。たとえば、「D:/ R/Library/CodingTools」と言います。これは、一致するリストとデフォルトオプションを使用して初期化スクリプトで実行できます。または、場所をハッシュテーブル、JSON、データベースなどの他の場所に保存することもできます。
他の人が言っているように、デフォルトのライブラリパスはRに通信する必要があります。これは.RProfile.siteで行うことができます。私の場合、Rインスタンスを必要に応じて初期化するために使用される別のスクリプトがあります。 Rによって読み取られる外部パラメーターファイル(.Rprofileなど)を避け、代わりに自分のパッケージ内の関数呼び出しを介してすべての初期化を実行しようとしています(パラメーターはまだ外部ですが)。これにより、作業のデバッグと再現が容易になる傾向があります。したがって、ライブラリパスは、データファイルの場所が指定されているのと同じ種類のJSONに含めることができます。
個人的には、スクリプト内でバンドルを定義するのをやめ、代わりにJSONを使用したいと思います。これは、セットアップ構成ごとに異なるJSONファイルをより簡単に作成できるためです。私はすでに、再現可能な作業の他のほとんどの目的のためにこれを行っています。