RまたはR Studioから外部パッケージをインストールした場合、デフォルトではホームディレクトリに「R」ディレクトリが作成されて、そのディレクトリ内に外部パッケージが配置されます。
そして、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パッケージなどを記載しておけば、毎回記載する手間が減少するというメリットがあります。
これらの情報が何かのお役に立てれば幸いです。

関連する記事

  • ggplot2を用いて階層的クラスタリングの結果を可視化する方法ggplot2を用いて階層的クラスタリングの結果を可視化する方法 R言語のggplot2パッケージを用いて階層的クラスタリングの結果を可視化する方法についてお伝えいたします。 一般に、階層的クラスタリングの結果は、デンドログラムまたは樹形図として可視化されます。 ggplot2パッケージには、デンドログラムまたは樹形図を可視化する機能が備わっておりません。 しかし、ggplot2パッケージと合わせてggdendroパッケージを用い […]
  • R言語 CRAN Task View:臨床試験デザイン、監視、および分析R言語 CRAN Task View:臨床試験デザイン、監視、および分析 CRAN Task View:Clinical Trial Design, Monitoring, and Analysisの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Ed Zhang and Harry G. Zhang Contact: Ed.Zhang.jr at […]
  • Ubuntu20.04にRをインストールする方法Ubuntu20.04にRをインストールする方法 Ubuntu 20.04 LTSにRをインストールする方法についてお伝えします。 作業は端末上で行うため、端末を起動しておきます(ショートカットキー:Ctrl+Alt+t)。 Ubuntuのバージョンを確認 Ubuntuのバージョンを確認するために、以下のコマンドを実行します。 Ubuntu 20.04と表記されていることを確認します。 $ cat […]
  • Ubuntu14.04とPython3でMeCabを使う方法Ubuntu14.04とPython3でMeCabを使う方法 MeCabは各種スクリプト言語(perl、ruby、python、Java)から、各言語バイディングで利用できるようになっている。 しかし、Pythonで用意されているのはPython2系のもので、残念ながらPython3系では使えない。 そこで、ここでは用意されているPython2系バイディングをPython3系に変換して使用する方法をお伝えする。 MeCab […]
  • R 関数に時間制限を設ける方法 ある処理にとても時間が掛かるため、一定時間経過後はその処理を途中で打ち切りたいときがある。 例えば、for文で、あるループだけが重いため全体として時間が掛かってしまう場合、その処理を一旦スキップしてfor文の先に処理を進めたい、などである。 ここでは、そのひとつの解決策として、関数に時間制限を設けて、一定時間経過後はその関数を強制終了するコードをご紹介する。 ただし […]
R .Rprofileを用いて外部パッケージの参照を変更する方法