Rはよい

最近、なんだか知らないけど、学内で発生する様々な数字がらみの相談事や仕事が回ってくる。話は平均とか標準偏差とか、すごく基礎的なことだったりするのだが、文系大学の常か、数学的思考が苦手な(というより怖い (^_^;;)人が多いみたいである。私も統計とかが得意なわけじゃないが、ついつい口がすべっていろいろ言ってるうちに引き受けてしまう(涙)。 今まで、簡単なやつはExcelで、ちょっとこみいったやつはPerlで(単になれてるから)書いたりしてたが、最近、とある業務でシミュレーションをするために、Rを使ってみた。これがすこぶるよろしい。何がいいかって、統計処理によくある繰り返し処理が、ほとんど一行でできてしまうのである。例えば、5×5の乱数の行列を作りたいとき、Perlとかだと、
for $i (1..5) {
   for $j (1..5) {
      $hoge[$i][$j] = rand;
   }
}
みたいに二重のループを書くのが普通だけど、Rの場合、一行で済む。
> matrix(runif(5*5), 5, 5)
            [,1]        [,2]      [,3]      [,4]       [,5]
[1,] 0.325992677 0.368004285 0.3570167 0.6702215 0.69333254
[2,] 0.425960421 0.716816706 0.8953218 0.1782265 0.67106648
[3,] 0.827647559 0.373641652 0.3121248 0.1187585 0.83014275
[4,] 0.009564262 0.813122955 0.7319390 0.7378099 0.05308507
[5,] 0.550200381 0.000687656 0.3869091 0.8271586 0.71943519
runif(n)でn個の乱数の配列(ベクトル)を作って、それをmatrixで行列にしちゃうのである。便利便利。これからもう少しいじってみようと思う。