[解決済み】Rprofile.siteの.libPathsを使用してRのデフォルトライブラリパスを変更しても動作しない。
質問
Windowsで、管理者でなくRを動かしています。パッケージをインストールする際、以下のコマンドを実行してもうまくいきません。
> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable
パッケージをインストールするには、ライブラリの場所を指定する必要があるんだ。
install.packages("zoo", lib="C:/software/Rpackages")
パッケージを読み込むには、ライブラリの場所も指定しなければならないんだ。
library("zoo", lib.loc="C:/software/Rpackages")
これはすべてOKなのですが、私は、このような場合にも、このような方法で
C:/software/Rpackages
をライブラリパスに追加することで、毎回入力する必要がなくなります。
ネットで検索したところ、1つの方法として
Rprofile.site
ファイルに追加し
.libPaths("C:/software/Rpackages")
しかし、これを実行し、RStudio を起動すると、次のような出力が得られます。
> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library"
は
.libPaths
というコマンドを追加して
Rprofile.site
は、何の効果もなかったようです! なぜこのようなことが起こるのでしょうか?もっと重要なのは、どうすればこの問題を解決して、ライブラリの場所を入力せずにパッケージをインストールしたりロードしたりできるようになるのか、ということです。
注:RStudioを起動すると
.libPaths()
コマンドは想定通りに動作しているようです。
.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
おかしいと思いませんか?
解決方法は?
私は通常、すべてのパッケージを1つのライブラリにまとめるようにしていますが、ライブラリを追加したい場合は、既存のライブラリパスに新しいライブラリ(ファイルシステムにすでに存在する必要があります)を追加してはどうでしょうか?
.libPaths( c( .libPaths(), "~/userLibrary") )
# obviously this would need to be a valid file directory in your OS
# min just happened to be on a Mac that day
または(これでuserLibraryが新しいパッケージを置く最初の場所になります)。
.libPaths( c( "~/userLibrary" , .libPaths() ) )
そうすると、(少なくともこれを最初に書いた当時は)こうなるんです。
> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/userLibrary"
は
.libPaths
関数は、他の多くの非グラフィックス関数とは少し異なります。それは、副作用によって動作します。この関数は
Sys.getenv
と
Sys.setenv
R の環境変数を報告したり変更したりするものは分割されましたが
.libPaths
は、その対象を報告することも変更することもできます。
Rの起動処理に関する情報は、以下のサイトで読むことができます。
?Startup
のヘルプページと、RStudioの資料があります。
https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio
あなたの場合、RStudio が Rprofile.site 設定を尊重しないか、RStudio のデフォルトの 1 つから .Rprofile 設定を読み取ることによってそれらを上書きしているように思われます。また、この操作の結果として
.Library
と
.Library.site
これは、RStudio(または他のIDEやネットワークインストールされた)ホストされたRが異なる動作を示すかもしれないさらなる理由です。
このため
Sys.getenv()
はRプロセスの現在のシステム環境を返すので、ライブラリなどのパスを
Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]
パッケージの保存とアクセスに重要なのは、以下の2つです(Linuxボックスでは現在、異なっています)。
R_LIBS_SITE /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_LIBS_USER /home/david/R/x86_64-pc-linux-gnu-library/3.5.1/
関連
-
[解決済み】エラー:'dimnames' [2]の長さが配列の範囲と等しくない [終了しました]
-
[解決済み】scale_color_manual()が動作しない件
-
[解決済み】値を置き換えようとすると、"データフレームの添え字の割り当てで欠損値は許可されない"
-
[解決済み】Rで文字ベクトルから引用符を削除する
-
[解決済み] 因子を日付形式に変換するにはどうすればいいですか?
-
[解決済み】 if/while (条件) {: TRUE/FALSEが必要な場所に値がない場合のエラー
-
[解決済み】ggplot2でのプロット:「Error: カテゴリ軸のY軸に "Discrete value supplied to continuous scale "と表示される。
-
[解決済み】 eval(expr, envir, enclos) でのエラー : オブジェクトが見つかりません。
-
[解決済み】R4DSのエラー比較(1)は、アトミック型とリスト型でのみ可能です
-
[解決済み] パッケージ 'xxx' は利用できません (for R version x.y.z) 」という警告にどのように対処したらよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。Rの次元数が正しくない
-
[解決済み】添え字付き代入でNAを使用することはできません
-
[解決済み】scale_color_manual()が動作しない件
-
[解決済み】Rで「パッケージ'FILE_PATH'のインストールで終了ステータスが0でなかった」。
-
[解決済み】「次のオブジェクトは 'package:xxx' からマスクされています」とはどういう意味ですか?
-
[解決済み】「'dimnames' [1]の長さが配列の範囲と等しくない」とはどういう意味ですか?
-
[解決済み】 eval(expr, envir, enclos) でのエラー : オブジェクトが見つかりません。
-
[解決済み】.External.graphics Rでエラーが発生しました。
-
[解決済み】"object not interpretable as a factor "というエラーの意味は?[クローズド]
-
[解決済み】Rで「中断されたプロミスの評価を再開する」という警告を回避する