とくに統合開発環境では統計解析をするだけであればインストール状態のまま使い続けて問題がないことが多いと思いますが、設定をいじると利用が快適になることもあります。
1 Rの設定ファイル
環境変数の設定/上書きができる.Renviron
とスクリプトを自動実行する.Rprofile
の2種類があります。
1.1 ユーザー設定ファイル
Rは起動時にシステム全体の設定とユーザー個々の設定の2種類を指定できますが、まず、ユーザー設定に関して説明します。
1.1.1
自動実行される.Rprofile
Rを起動時に自動的にコードを実行させて、Rの環境整備を行なうことができます。.RProfile
に書いておくだけですが、.RProfile
を作るのがWindows環境では苦労するかも知れません。
1.1.2
.RProfile
の作成
.Rprofile
の位置は、Sys.getenv("R_USER")
で確認できるフォルダーの下になります1。Windows
7以降の標準的な構成では
`%USERPROFILE%\Documents\.RProfile`
が参照されますが、昔はDocuments
ではなくMy Documents
だったりと変遷があります。
メモ帳は名前がドットからはじまるファイルを作ることができないため、メモ帳以外のアプリケーションで.Rprofile
を作る必要があるかも知れません。Rで処理する場合は、
cat("# created by R",
file = file.path(Sys.getenv("R_USER"), ".Rprofile"))
とでもすれば作れます。編集はメモ帳でできるはずです。
Linuxの場合は
$HOME/.Rprofile
にあるし、vi
でもgedit
でも.Rprofile
を問題なく作れるのですが。
1.1.3
環境変数R_USER
の設定
Windows環境に限定して、設定ファイルの位置と名前を変更することを考えます。
デフォルトの’%USERPROFILE%‘以下に’.Rprofile’(と後述する.Renviron
)を置きたくない場合は、Windowsの設定でユーザー環境変数R_USER
を設定しましょう。例えば、
R_USER = %USERPROFILE%
とすれば、%USERPROFILE%/.Rprofile
と%USERPROFILE%/.Renviron
が読み込まれることになって、Documents
かMy Documents
かと言うようなリスクを無くせます。
1.1.4
.Rprofile
の場所と名前の変更
ユーザー環境変数R_PROFILE_USER
を%R_USER%\Rprofile
と設定すれば、メモ帳で作成しやすいファイル名にすることができます。
1.1.5
.Rprofile
に何を書くべきか?
これは状況次第だと思いますが、2つ例を挙げます。
1.1.5.1 パッケージのインストール元、先、検索パスの設定
私のWindows環境の.Rprofile
は以下になります。
with(list(R_LIBS=file.path(Sys.getenv("USERPROFILE"), "R_LIBS")), {
.libPaths(R_LIBS)
Sys.setenv(R_LIBS_USER=R_LIBS)
})
options(repos="https://cran.ism.ac.jp/")
パッケージをインストール先と検索パスを変更し、install.packages
のデフォルトのリポジトリを指定しているだけです。
1.1.5.2 ロケールの変更
ブログなどでよく見かけるのは、タイムゾーンや文字コードなどの変更をするロケールの変更で、例えば以下のようにできますが、
Sys.setlocale("LC_TIME", "German") # Windows
ロケール名がOSに依存するのと、OS準拠の表記でも受け付けてもらえない場合があります。
1.1.6
環境変数の追加する.Renviron
何かの都合でRから参照する環境設定を追加か変更したい場合は、.Renvironと言うファイルを作ります。Windowsの場合、
cat("RTOOLS42_HOME = C:\\\\rtools42",
file = file.path(Sys.getenv("R_USER"), ".Renviron"))
とでもして作ると、R再起動時にシステム環境設定が追加され、
Sys.getenv("RTOOLS42_HOME")
で、
[1] "C:\rtools42"
と読み込むことができます。なおRTOOLS42_HOME
はR CMD SHLIB
で参照するR
toolsのインストール先です2。
1.1.7
.Renviron
の場所と名前の変更
ユーザー環境変数R_ENVIRON_USER
を%R_USER%\Renviron
と設定すれば、メモ帳で作成しやすいファイル名にすることができます。
1.2 システム設定ファイル
大学などで他人数が一つのシステムを利用すると同時に、そのシステム固有の設定を個々の利用者ではなくシスアドが設定したい場合はあると思います。ユーザー全員が自動実行するファイルは$R_HOME/etc/Rprofile.site
で、ユーザー全員の環境変数に追加するファイルは$R_HOME/etc/Renviron.site
になります。また環境変数R_PROFILE
とR_ENVIRON
で位置と名前を変えられます。
2 起動オプション
ヘルプを見ればだいたい書いてありますが、以下のオプション3が取れます。
コマンド | 説明 |
---|---|
--version | バージョン表示 |
--encoding=enc | 標準入力の文字コード |
--encoding enc | 同上 |
--save | 終了時に作業スペースを保存 |
--no-save | 終了時に作業スペースを保存しない |
--no-environ | .Renviron を読み込まない |
--no-site-file | システム.Rprofile を読み込まない |
--no-init-file | ユーザー.Rprofile を読み込まない |
--restore | 起動時に保存した作業スペースを読み込む |
--no-restore-data | 起動時にデータを読み込まない |
--no-restore-history | 起動時に履歴を読み込まない |
--no-restore | データも履歴も読み込まない |
--workspace=file | 作業スペースの指定 |
--vanilla | --no-save --no-restore --no-site-file --no-init-file --no-environ と同じ |
--max-ppsize=N | 最大protect stackサイズをNにする |
-q, --quiet, --silent | 起動メッセージを表示しない |
--no-echo | 可能な限り表示を抑制する |
--slave | 同上 |
--verbose | Rの挙動監視モード |
--args | これより右の引数をオプションとして解釈しない |
--ess | CLIでgetline()を使わない(Emacs用?) |
--no-readline | 同上 |
-f file | スクリプトファイルを読み込む |
--file=file | 同上 |
-e expression | expressionをRの命令として解釈実行 |
--cd-to-userdocs | ユーザー・ドキュメント・フォルダーにカレントディレクトリを移動する |
--debugger=name | デバッガーnameからRを起動する(Windows不可) |
-d name | 同上 |
--min-vsize=N | 可変長オブジェクト用のメモリ量の下限をN4にする |
--max-vsize=N | 可変長オブジェクト用のメモリ量の上限をNにする |
--min-nsize=N | 固定長オブジェクト用のメモリ量の下限をNにする |
--max-nsize=N | 固定長オブジェクト用のメモリ量の上限をNにする |
バッチファイルを作るとき、ワークスペースの保存と読み込みを使いたくないとき、色々とRがクラッシュするようなことをやってしまったときにお世話になりそうな機能が並んでいます。
2.1 ヘルプの表示
Windowsの場合は以下のようにするとコマンド一覧が見られます。
R --arch x64 --help
なぜ32bits版がなくなり64bits版だけの世界になったのですが、64bits指定しないといけません。
Linuxの場合は
R --help
と普通に表示できます。
2.2 バッチファイルを作る
R
2.5以降はRscript
コマンドが用意されているのでこう書くことはないと思いますが、
R --vanilla --slave --encoding=utf-8 -f "ファイル名" --args arg1 arg2
と言うようにコマンドを実行できます。引数はcommandArgs()
でベクトルとして取れます。
Rscript --encoding=utf-8 "ファイル名" arg1 arg2
とする方が一般的ですが。なお、Rscriptは--no-echo
と--no-restore
と--args
がついているので、.Renviron
と.Rprofile
の取り扱いが変わります。
-e
の引数をRの文として解釈できるので、やろうと思ったら
R --vanilla --slave -e "a=commandArgs();as.numeric(a[7])+as.numeric(a[8])" --args 123 321
[1] 444
と言うようなこともできます。シェルスクリプトと連携させることもできるわけですね。やっているのを見たことが無いですが。
2.3 対話モードの起動オプション変更
Windowsの場合はショートカットアイコンのリンク先を変えます。利用者の都合にあわせる部分ですが、私は
"C:\Program Files\R\R-4.2.2patched\bin\x64\Rgui.exe" --cd-to-userdocs --quiet --no-save --no-restore
としています。
- 起動メッセージは日常的には邪魔なので、
--quiet
をつけています。 - デフォルトでは作業スペースを保存するか確認するのですが、ついつい
ENTER
を連打して.RData
を作ってしまうので--no-save
をつけています。 - 不用意に以前の作業の状態をロードすると予想外の挙動になるので
--no-restore
をつけています。 - ユーザー・ドキュメントで作業することは無いですが、
--cd-to-userdocs
はインストール状態のままにしています。
Linuxなどでコマンドラインで起動する場合は.bash_profile
でエイリアスを設定してください。
3 Windowsのコンソールの設定
RGuiのメニューの編集の中にあるGUIプリファレンスで設定すればいい気がしますが、%R_HOME%\etc\Rconsole
の設定をいじるか、%R_USER%/Rconsole
をつくって設定を上書きします。なお、Rを再起動しなくてもloadRconsole()
で設定を読み込めます。
4 Windowsの画面描画の設定
%R_HOME%\etc\Rdevga
の設定をいじるか、%R_USER%/Rdevga
をつくって設定を上書きします。
5 その他の環境変数
これまで言及してこなかったもので、以下の環境変数が設定できます。
環境変数 | 説明 |
---|---|
R_PAPERSIZE |
デフォルトの印刷サイズ(未確認) |
R_PRINTCMD |
デフォルトの印刷コマンド(未確認) |
R_HISTFILE |
履歴の保存ファイル |
R_HISTSIZE |
保存する履歴の行数 |
R_LIBS |
全体のパッケージのインストール先 |
R_LIBS_USER |
ユーザーごとのパッケージのインストール先 |
なお、R_LIBS
とR_LIBS_USER
は設定しても.libPaths()
に載らないのでlib.loc
を省略したlibrary
では呼び出せず、期待した動作にならないと思います。
6 まとめ
細部は覚えておく必要はなく、何かに困ってから検索サーバーを使って調べれば間に合うものですが、どんなことができるのかは知っておいた方がよいでしょう。出来ないと思っていたら出来たと言うこともありえます。