メモ:MinGWからEmacs+ESSでRのコードを書くときに設定する環境変数

MinGWでビルドしたEmacsを使ってるんですが、依存ライブラリとかの関係でmsys64.exeから立ち上げる必要があります。

Rが見つけられないという問題はinferior-R-program-nameを指定しておけば大丈夫なんですが、

;; specify the location of R
(setq inferior-R-program-name "C:/Program Files/R/R-3.5.0/bin/R.exe")

もうひとつ問題は、HOMEが違うことです。

path.expand("~")
#> [1] "C:\\msys64\\home\\hiroaki-yutani"

このため、ユーザ用のRのライブラリがインストールされているパス(C:/Users/ユーザ名/Documents/R/win-library/3.5みたいなほう)を見てくれません。

.libPaths()
#> [1] "c:/Program Files/R/R-3.5.0/library"

対処法は、必要な環境変数を指定しておくことです。

(setenv "R_ENVIRON_USER" "c:/Users/ユーザ名/Documents/.Renviron")
(setenv "R_PROFILE_USER" "c:/Users/ユーザ名/Documents/.Rprofile")
(setenv "R_LIBS_USER" "c:/Users/ユーザ名/Documents/R/win-library/3.5")

ちなみにハマったこととしては、R_LIBS_USERに指定するパスは最後に/を含めてはだめっぽいこと。

;; これだとだめ
(setenv "R_LIBS_USER" "c:/Users/ユーザ名/Documents/R/win-library/3.5/")

もうちょっといい方法あるのかな...