そして、library()関数などで外部パッケージを読み込む際には、デフォルトではこのホームディレクトリの「R」ディレクトリが読み込まれます。
このようなデフォルトの挙動を変更したいときの方法をお伝えします。
変更する方法がいくつかありますが、ここでは、.Rprofileというファイルを用いて変更する方法をお伝えします。
環境
検証した環境は次になります。
OSはLinuxを用いておりますが、その他のOSでも問題ありません。
OS
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.2 LTS
R
R --version
R version 4.0.5 (2021-03-31) -- "Shake and Throw"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R Studio
rstudio --version
1.4.1106
.Rprofile
.Rprofileというファイルについて、簡単にご説明します。
作業ディレクトリが設定されたとき、作業ディレクトリ内に.Rprofileが存在すると、自動的に.Rprofileが読み込まれます。
そして、この.RprofileはRスクリプトになります。
ここでは、この機能を用いて、.Rprofile内に外部パッケージの参照を変更するコードを予め記載しておくことで問題を解決します。
外部パッケージの参照を変更
ここでは、R Studioを用いて.Rprojからプロジェクトを立ち上げることを想定します。
適当なプロジェクトを作成して、立ち上げます。
外部パッケージの参照がどのようになっているのかは.libPaths()関数で確認します。
当方の環境では次になりました。
.libPaths()
[1] "/home//R/x86_64-pc-linux-gnu-library/4.0" "/usr/local/lib/R/site-library"
[3] "/usr/lib/R/site-library" "/usr/lib/R/library"
次に、.Rprojファイルがあるディレクトリに適当なエディタで「.Rprofile」ファイルを作成します。
ここでは、外部パッケージの参照先を予め作成したおいた「/opt/r_sample/libs」とすることにします。
.libPaths()関数の引数に外部パッケージの参照先を設定します。
次のコードにおいて、上から順に優先度が割り振られます。
.libPaths(
c(
"/opt/r_sample/libs",
"/usr/local/lib/R/site-library",
"/usr/lib/R/site-library",
"/usr/lib/R/library"
)
)
一旦、R Studioを終了させて、.Rprojから再度プロジェクトを立ち上げます。
変更されたかを確認するため、.libPaths()関数を実行します。
変更されたことが確認できました。
.libPaths()
[1] "/opt/r_sample/libs" "/usr/local/lib/R/site-library" "/usr/lib/R/site-library" "/usr/lib/R/library"
終わりに
今回の方法以外でも、外部パッケージの参照をRの設定ファイルの変更や環境変数を設定などを用いても対応することもできます。
しかし、今回の方法以外ではやや複雑であり、間違えたときの原因究明や復旧の難易度などを考えると、最も手軽に試すことができる方法として.Rprofileによる方法をお伝えしました。
また、.Rprofileは作業ディレクトリが設定された、または変更されたときに自動的に読み込まれるRスクリプトのことでした。
そのため、今回のような外部パッケージの参照の変更だけではなく、通常で用いるtidyverseパッケージなどを記載しておけば、毎回記載する手間が減少するというメリットがあります。
これらの情報が何かのお役に立てれば幸いです。