.Rprofileで、R起動時に自作functionを読み込む方法
最近までRprofileの使い方がわかりませんでした。
しかし、研究室の後輩がさらっと、Rprofileを使って警告を出ないように設定していると聞いて、なんやてとなったので、調べてみました。
めちゃくちゃ簡単だし、下記のサイトたちにまとめてありますね。
OSによって、設定の仕方が違うようです。
stats.biopapyrus.jp
blog.livedoor.jp
起動時に設定されるworking directory に、.Rprofile を入れたらいいだけのようです。
以下では、上の二つのサイトをまとめた話をします。
また、それだけだと寂しいので、いくつか自作functionを載せておきます。
1. '.Rprofile'を見えるようにする
問題は、通常では.Rprofileが見えないということ。
見えなくても使えるけど、見えた方が後々編集しやすい。
そのために、Terminalを開いて
defaults write com.apple.finder AppleShowAllFiles YES killall Finder /System/Library/CoreServices/Finder.app
と入力。そうすると、不可視ファイルが見えるようになります。
ただ、フォルダの中身がごちゃごちゃするので、それが嫌な人は
defaults write com.apple.finder AppleShowAllFiles NO killall Finder /System/Library/CoreServices/Finder.app
にして、通常は消しといてください。
2. Working directoryの確認
Rを開きます。
getwd()
と入力して、Working directoryを確認します。
Macならば、Finderの一番下、家マークのDirectoryにきていると思います。
3. '.Rprofile'を作成する
書き方は、R言語で書くことができます。
例えば、いつも同じlibraryを読み込みたいと言うならば、適当なメモ帳なり、TextEditorを開いて、
library(ggplot2)
と書いたファイルを、.Rprofileと言う名前で、getwd()で確認した場所に保存。
これだけで、常に、Rを起動時にggplot2というパッケージが自動で読み込まれるようになります。
では、.Rprofileの中に書き込んだら便利かなというfunctionを紹介します。
複数library を一回で読み込むと同時に、もし、そのpackageが install されていなかったら、自動で installするfunctionです。
load.lib <- function (libs, install=FALSE) { #################################### ## ## libs に、パッケージの名前。複数可能 ## install で、installするかどうかを決めます。 ## install=FALSEで、自動インストールをしないです。 ## #################################### if(install){ lib.all <- library() lib.name <- lib.all$results if(sum(libs %in% lib.name )!=length(libs)){ installed <- which(libs %in% lib.name) uninstalled <- libs[-installed] invisible(lapply(uninstalled, function(x) invisible(install.packages(package = x)))) } } invisible(lapply(libs, function(x) invisible(library(package = x, character.only = TRUE)))) invisible(sapply(libs, function(x) cat(sprintf("%s %s\n", x, packageVersion(x))))) }
使い方の例
> load.lib( c("ggplot2", "tidyr", "vegan"), install=FALSE) Loading required package: permute Loading required package: lattice This is vegan 2.5-6 ggplot2 3.3.2 tidyr 1.1.2 vegan 2.5.6
以上のように、c() でくくってやれば、複数のパッケージを同時に読み込むことができます。
もちろん、くくらなくても"ggplot2"だけ放り込んでも動きます。
また、論文を書く上で、package情報を知っておく必要があると思います。
なので、パッケージversionもoutputできるようにしています。
この関数の前に、sink()をかましてやれば、自動でテキストファイルに落とすことも可能ですね。