R

トップページ
Google
WWWを検索
サイト内を検索

とくに統合開発環境では統計解析をするだけであればインストール状態のまま使い続けて問題がないことが多いと思いますが、設定をいじると利用が快適になることもあります。

1 Rの設定ファイル

環境変数の設定/上書きができる.Renvironとスクリプトを自動実行する.Renvironの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 = paste(Sys.getenv("R_USER"),
        ".Rprofile", sep="/"))

とでもすれば作れます。編集はメモ帳でできるはずです。

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が読み込まれることになって、DocumentsMy 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=paste(Sys.getenv("USERPROFILE"), "R_LIBS", sep="/")), {
    .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 = paste(Sys.getenv("R_HOME"),
        ".Renviron", sep="/"))

とでもして作ると、R再起動時にシステム環境設定が追加され、

Sys.getenv("RTOOLS42_HOME")

で、

[1] "C:\rtools42"

と読み込むことができます。なおRTOOLS42_HOMER 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_PROFILER_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_LIBSR_LIBS_USERは設定しても.libPaths()に載らないのでlib.locを省略したlibraryでは呼び出せず、期待した動作にならないと思います。

6 まとめ

細部は覚えておく必要はなく、何かに困ってから検索サーバーを使って調べれば間に合うものですが、どんなことができるのかは知っておいた方がよいでしょう。出来ないと思っていたら出来たと言うこともありえます。


  1. OSで環境変数R_USERを設定していなくても、Windows版Rでは自動的に設定してくれます。↩︎

  2. ユーザーごとの設定にはならないと思うので、システム環境変数に書いておいた方が良いと思います。また、RToolsのインストール時に自動でOSのシステム環境変数に設定してくれた気がします。↩︎

  3. R CMD SHLIBのようなコマンドは除きます。↩︎

  4. K,M,Gの桁を付け加えることもできます。↩︎