R でパッケージをロードする方法は library 関数と require 関数があります。通常のパッケージをロードするという目的において,スクリプト内で使うなら require の方が良いでしょう。理由は 2 つあって, 1 つは既にパッケージがロードされている場合は再ロードを行わないということ,もう 1 つは require がパッケージが利用可能になったかという logical 値を返すことです[A]。
前者に関しては単純に速度の問題ですが[B],後者に関しては次のようなことができます。
if (!require(foo)) {
install.packages("foo")
# もう一度パッケージのロードをしてみるけどまたダメならあきらめよう
stopifnot(require(foo))
}
つまり,パッケージがロードされていない場合はパッケージがインストールされていないという仮定をして,パッケージのインストールとロードを行う,といった処理ができます。
更新履歴
- パッケージの再ロードのくだりを削除[C]。
脚注
libraryもlogical.returnにTRUEを指定すれば logical 値が返ってきます。 [↩]- ソースコードが何百もあってそれぞれでライブラリーを呼び出されているようなことがない限り気にする程の差はありませんが。 [↩]
- hoxo_m さんに指摘されました。ありがとうございます [↩]