R起動時にpackageを自動ロードする
よく使うパッケージを起動のたびにlibrary()やrequire()をするのは面倒かと思います。その時は.Rprofile内に
suppressMessages(library(hoge))
の一文を入れておきましょう。(違いました。追記を見て下さい。)
suppressMessages()はなくても構いませんが、出力として表示されるはずのメッセージを表示しないようにしてくれます。
この類似としてsuppressWarnings()という警告メッセージのみを抑制する関数も存在しています。
(追記)
上のコードで読み込んだ際のサーチパスが思うように行きませんでした。ここではdplyrパッケージをロードしたのですが、下の実行結果を見て下さい。
> search() [1] ".GlobalEnv" "tools:rstudio" "package:stats" "package:graphics" [5] "package:grDevices" "package:utils" "package:datasets" "package:dplyr" [9] "JapanEnv" "package:methods" "Autoloads" "package:base"
本来(Rコンソールからロードした時)ならば、2つ目の要素に "package:dplyr" が来ていなければなりません。dplyrパッケージの場合はfilter()とlag()がpackage:statsにマスクされているので、このサーチパスのおかしい状態で関数を呼ぶとpackage:statsのfilter()とlag()が呼び出されてしまいます。
ならどうしたらいいの?
ということで試行錯誤しましたが、Startupのhelpマニュアルを見たらちゃんと書いてありました。不要なところをはしょると、.Rprofileの中身を読み込んでから.First.sys()を実行するという順序になっています。
.First.sys()はoptions("defaultPackages")にあるパッケージをロードする関数で、つまりは
「.Rprofileでdplyrをロード → デフォルトパッケージをロード」
の順になっているわけです。
問題を解決するためには、デフォルトパッケージと同時にdplyrをロードするようなコードにする必要があります。
ですから、初めのコードの修正としてはデフォルトパッケージ自体を修正する
options(defaultPackages = c(getOption("defaultPackages"), "dplyr"))
というコードになります。
これでもう一度確認すると、正しいサーチパスになっていることがわかります。
> search() [1] ".GlobalEnv" "tools:rstudio" "package:dplyr" "package:stats" [5] "package:graphics" "package:grDevices" "package:utils" "package:datasets" [9] "JapanEnv" "package:methods" "Autoloads" "package:base"