web-dev-qa-db-ja.com

Rライブラリの移行

Linuxで複数のRライブラリ(*)をあるドライブから別のドライブに移動したいのですが、単純な移動が実行可能で安全かどうか、またはパッケージをアンインストールして再インストールする必要があるかどうかを知りたいです。ライブラリの場所は.libPaths()で識別され、「Rインストールと管理」マニュアルを調べてライブラリの移行について調べましたが、推奨されるプロセスがわかりません。

私は3つの選択肢を認識しています。

  1. すべての非基本パッケージに対してremove.packages()を実行し、install.packages(lib = "/path/to/new/location")を介して新たにインストールします。
  2. mvを使用してライブラリ(ディレクトリ)を移動し、シンボリックリンクを使用して新しい場所をポイントします(最終的にはシンボリックリンクを削除します)
  3. Linuxでmvコマンドを使用して、ディレクトリを卸売りで移動し、 Rインストールおよび管理マニュアル で提案されているように、.Library.siteR_HOME/etc/Rprofile.siteを更新します。

オプション#1は鈍いです。オプション#2は機能するはずですが、少し不健全なようです。

#3は安全ですか、それとも深刻な問題がありますか?私が特定した問題は、ディレクトリのアクセス許可と、パッケージのセットアップが相対パスではなく絶対パスを格納する可能性です(これは不健全で不必要に思えます)。

絶対パスの保存に関して、rJavarunというファイルにR_HOMEの場所を保存していることがわかりました。これはライブラリの問題自体ではありませんが、パッケージ(およびその点で優れたパッケージ)のプライベートコピーを保持していることを示す1つの指標です。絶対パス。

(*)いくつかのライブラリと多数のパッケージがあります。当然、ライブラリ(ディレクトリ)のみが移動されますが、パッケージが影響を受ける可能性があります。


UPDATE 1 /明確化:明確にするために:私はonlyライブラリを移行しており、Rのバージョンやパッケージのバージョンを変更していません。 Rまたはパッケージの更新は個別に実行できますが、問題はライブラリの移動が可能かどうかだけです。正しくインストールされていることを確認するためにすべてのパッケージを更新または再インストールする必要がある場合、それはオプション#3よりもオプション#1に似たパスのようです。

更新2: another SO post アップグレード時にこの問題を回避する方法についていくつかの良いアイデアがあります。私はRをアップグレードしていませんが、DirkEddelbuettelの提案ではありません。 Rのファイルツリーにパッケージをインストールするのが賢明です。

28
Iterator

受け入れられた答えを これ と組み合わせると、私はうまくいくより簡単な解決策を見つけました:

lib_loc <- "C:/Users/apdev/Documents/R/win-library/3.3"
to_install <- unname(installed.packages(lib.loc = lib_loc)[, "Package"])
to_install
remove.packages(to_install, lib="C:/Users/apdev/Documents/R/win-library/3.3")
install.packages(pkgs = to_install, lib="C:/Program Files/R/R-3.6.1/library")
0
Rodrigo Coelho