世間で統計が流行っている? んじゃ、Rでも入れてみますか。
Coqをインストールしたとき、拍子抜けするくらい簡単でした(Proof Generalは少しめんどくさかった)。歴史のあるソフトウェアは、インストーラーの作り込みもシッカリしてるなー、と感心しました。
前身であるS言語から勘定すると、Coqと同じく30年以上の歴史*1を持つR言語、これもインストールがやたらに簡単。特に書くことがありません。「Windowsにインストール」で特別な話になるかと思ったら、ほとんどプラットフォーム非依存でした。よく出来てるわ。
Rの本家サイト http://www.r-project.org/ から適当なミラーサイト(例えば、http://cran.md.tsukuba.ac.jp/)を選んで、セットアップ用バイナリをダウンロードして実行するだけです。
今日2015-04-14の時点での最新バージョンは version 3.1.3 (2015-03-09) です。明後日2015-04-16には、R 3.2.0が出るそうです*2。
インストールが終われば、Rアイコンのクリックで起動できてすぐに使えるのですが、少し設定をしておきます。
設定すること:
PATH、その他の環境変数
R関連ディレクトリの構成は、すべてのプラットフォームでまったく同じではないでしょうが、単一ディレクトリ配下に収めるなら似たようなもんでしょう。Rのインストールされたディレクトリを$R_HOMEとします。
シェル・コマンドラインからのプログラム起動のためにパスを通しておきます。32ビット版バイナリと64ビット版バイナリがそれぞれ、$R_HOME/bin/i386/ と $R_HOME/bin/x64/ に分けて入っています。64ビット環境なら32ビット版を使う必然性はないと思うので、$R_HOME/bin/x64/ だけを環境変数PATHに加えました。
実行ファイルは、(Windowsの場合)R.exe以外に、Rcmd.exe, Rscript.exe, Rterm.exeなどがありますが、どうも歴史的な事情で色々残っているようで、R.exeだけで何でも出来ます。ウィンドウでRコンソールを実行するには、Rgui.exeを起動します。
RはOSの環境変数をあまり使わないようです。ライブラリパス指定のR_LIBSとかあるにはありますが、最初は設定不要でしょう。
ウィンドウ設定
デフォルトでインストールすると、GUIがMDI(Multiple Document Interface)だったので、$R_HOME/etc/Rconsoleファイルを編集して、MDI = no (SDI=Single Document Interface)に。
## Style # This can be `yes' (for MDI) or `no' (for SDI). # MDI = yes MDI = no
それと、ウィンドウのサイズを変更。
# Dimensions (in characters) of the console. # rows = 25 rows = 58 # columns = 80 columns = 90 # Dimensions (in characters) of the internal pager. # pgrows = 25 pgrows = 58 # pgcolumns = 80 pgcolumns = 90 # should options(width=) be set to the console width? setwidthonresize = yes
画面の色も変えられますが、これはそのまま。ユーザー入力が赤、システム出力が青です。
## Colours for console and pager(s) # (see rwxxxx/etc/rgb.txt for the known colours). background = White normaltext = NavyBlue usertext = Red highlight = DarkRed
ここで使う色の名前は、$R_HOME/etc/rgb.txt に書いてあります。
設定ファイルetc/Rconsoleをテキストエディタで編集した後で気付いたのですが、Rコンソール起動後の [編集]-[GUIプリファレンス] でも設定できます。MDIかSDIかは、起動時コマンドラインオプション rgui --mdi と rgui --sdi でも切り替えられます。このオプションはヘルプ(rgui --help)には載ってません、Windowsプラットフォーム固有のオプションだからでしょうか。
キーボード
キーボードのカスタム設定は見当たらないのですが、GNU readline風(Emacs風)のキーバインドになっているので文句はありません。Ctrl-U(行を全部削除)、Ctrl-T(文字の入れ替え)も使えます。画面クリアは Ctrl-L です。タブ補完もデフォルトで使えるようです([ヘルプ]-[コンソール]では、rcompgenパッケージが必要とあるが)。
ヘルプシステム
ヘルプページ表示は「HTMLをブラウザで表示」と「テキストを別ウィンドウで表示」の二種類があります。テキスト表示も悪くないので $R_HOME/etc/Rprofile.site を編集してテキストに設定。
# set the default help type options(help_type="text") # options(help_type="html")
この$R_HOME/etc/Rprofile.siteは、Rのスタートアップファイル(起動時実行ファイル)なので、Rのスクリプトです。
Rのヘルプシステムは充実しています。コンソールウィンドウのヘルプメニューから項目を選んでもいいですし、プロンプトにhelpコマンド(Rのhelp()関数の呼び出し)を打ち込んでもいいです。一番簡単なのは、疑問符「?」を使う方法で、トピック名や関数名を「?」に続けます。?Syntax とか ?attributes とか。特殊文字を含むときは引用符で囲って ?":" とか。
「ヘルプの使い方のヘルプ」は次のとおり。これだけは忘れないように。
> ?"?"
> ?"??"
> ?apropos
example()関数により、関数の使用例の表示や実演が行われます。
> help(attributes) # 別ウィンドウまたはブラウザにヘルプページが出るattrbt> x <- cbind(a = 1:3, pi = pi) # simple matrix with dimnames
attrbt> attributes(x)
$dim
[1] 3 2$dimnames
$dimnames1
NULL$dimnames2
[1] "a" "pi"
attrbt> ## strip an object's attributes:
attrbt> attributes(x) <- NULLattrbt> x # now just a vector of length 6
[1] 1.000000 2.000000 3.000000 3.141593 3.141593 3.141593attrbt> mostattributes(x) <- list(mycomment = "really special", dim = 3:2,
attrbt+ dimnames = list(LETTERS[1:3], letters[1:5]), names = paste(1:6))attrbt> x # dim(), but not {dim}names
[,1] [,2]
[1,] 1 3.141593
[2,] 2 3.141593
[3,] 3 3.141593
attr(,"mycomment")
[1] "really special"
>
面白い例: example(persp) とすると、2変数関数の3次元グラフ描画が実演されます。
スタートアップファイル
先の設定で触れた$R_HOME/etc/Rprofile.siteはスタートアップファイルなので、起動時に実行されます。ユーザー独自のスタートアップファイルは ~/.Rprofile です。「~」はホームディレクトリで、環境変数HOMEで(Windowsでも)指定できます。Rに対してだけ別なホームを伝えたいなら環境変数R_USERに指定します。
最初は特にスタートアップファイルに書いておくこともないので、僕は次のような1行だけ入れてます。
# ~/.Rprofile message("Hello, this is R")
カレントディレクトリ、作業スペースとその保存
Rにとって、カレントディレクトリはけっこう重要な意味を持ちます。
- スタートアップファイル.Rprofileがカレントディレクトリにあれば、~/.Rprofileより優先されて読み込まれる(~/.Rprofileは無視される)。
- 作業スペース(後述)の保存データ.RDataとユーザー入力のヒストリー.Rhistoryは、カレントディレクトリのものが読み込まれる。
- .RDataと.Rhistoryの書き込みは、カレントディレクトリに対して行われる。
要するに、カレントディレクトリが“プロジェクトフォルダ”として扱われるのです。カレントディレクトリの確認と設定は、getwd() と setwd("パス") で実行できます。パスの形式は、Windowsでもスラッシュ区切りとチルダ(「~」、ホームディレクトリ)が使えます、つーか、その形式を使うべきです。
R実行中のメモリーイメージ(の一部)を作業スペース(ワークスペース; workspace)と呼びます。.RDataファイルは、終了時の作業スペースを保存しているファイルです。ハードウェア、仮想マシン、インタプリタなどで、状態をファイルに保存してリジュームできるものがあるじゃないですか、あんな感じの機能がRに付いてます。でも、画面まで再現されたりはしません。
作業スペースの再現は、スタートアップファイルを実行した後で行われるので、スタートアップファイルにプロジェクトフォルダへの移動を書いておくと便利かもしれません(場所が決まっているなら)。
# ~/.Rprofile message("Hello, this is R") setwd("~/R-Projects/MyProject") message(paste("Current Dir:", getwd()))
CRANミラーサイトの設定
CRAN(The Comprehensive R Archive Network)は、Rのライブラリ(パッケージ群)を提供しているリポジトリです。たくさんのミラーサイトから構成されています。packageStatus()、available.packages() などのコマンド(R関数呼び出し)は、インターネット上のCRANミラーサイトにアクセスします。
> packageStatus()
--- このセッションで使うために、CRAN のミラーサイトを選んでください ---
CRANミラーサイトの設定がされてないと、ダイアログが出てミラーサイトを聞かれます。
$R_HOME/etc/Rprofile.site に設定しておくとよいでしょう。
# set a CRAN mirror local({r <- getOption("repos") r["CRAN"] <- "http://cran.md.tsukuba.ac.jp/" options(repos=r)})
再設定と確認のコマンド
起動した後でも、options()関数で設定の変更ができます。
> options("help_type")
$help_type
[1] "text"> options(help_type="html")
starting httpd help server ... done
>
次のような変数や関数で、自分の環境を確認できます。
- R.home() : $R_HOMEの実際のパス。引数に "bin", "etc", "share", "doc", "include", "modules" を渡して、それぞれの場所を知ることもできる。
- .Pratform : Rが稼働しているプラットフォームの情報。
- .libPaths() : ライブラリの検索パス。検索パスの設定もできる。変数 .Library, .Library.site もある。
- path.package() : パッケージの存在するローカルディレクトリパス。
- installed.packages() : インストールされているパッケージの一覧。名前だけなら .packages(all.available=TRUE) が手早い。
- available.packages() : CRANに存在するパッケージの一覧、膨大な数。