とくに統合開発環境では統計解析をするだけであればインストール状態のまま使い続けて問題がないことが多いと思いますが、設定をいじると利用が快適になることもあります。
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で処理する場合は、
とでもすれば作れます。編集はメモ帳でできるはずです。
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://ftp.yz.yamagata-u.ac.jp/pub/cran/")パッケージをインストール先と検索パスを変更し、install.packagesのデフォルトのリポジトリを指定しているだけです。
1.1.5.2 ロケールの変更
ブログなどでよく見かけるのは、タイムゾーンや文字コードなどの変更をするロケールの変更で、例えば以下のようにできますが、
Sys.setlocale("LC_TIME", "German") # Windows
ロケール名がOSに依存するのと、OS準拠の表記でも受け付けてもらえない場合があります。
1.1.6
環境変数の追加する.Renviron
何かの都合でRから参照する環境設定を追加か変更したい場合は、.Renvironと言うファイルを作ります。Windowsの場合、
とでもして作ると、R再起動時にシステム環境設定が追加され、
で、
[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 まとめ
細部は覚えておく必要はなく、何かに困ってから検索サーバーを使って調べれば間に合うものですが、どんなことができるのかは知っておいた方がよいでしょう。出来ないと思っていたら出来たと言うこともありえます。
