Rのバージョン3.1.0がリリース

概要
統計処理言語の R のバージョン3.1.0が、2014年4月10日に公開された。この新リリースでの主な変更点について解説する。

バージョン3.1.0のリリース

2014年4月10日、R のバージョン3.1.0がリリースされた。コードネームは Spring Dance(春の踊り)である。バージョン3.0.0がリリースされたのは、2013年4月3日なので、およそ1年を経てマイナーバージョンアップが行われたことになる [1]

Rのバージョン3.1.0のコードネームは Spring Dance(春の踊り)である。
Rのバージョン3.1.0のコードネームは Spring Dance(春の踊り)である。 [2]

バージョン3.1.0での変更点の詳細は、Rアナウンスメーリングリストでのバージョン3.1.0リリースの通知R 3.1.0 is released、英語)を参照されたい。

バージョン3.1.0での主な変更点

以下で、バージョン3.1.0での変更点のうち、重要だと思われる点をいくつか紹介しよう。

入力とそれに続く処理

  • read.table() や scan() などファイルを読み込むための函数に、skipNul というオプションが加わった。このオプションが TRUE になっていると、ヌル文字をスキップする。なお、skipNul オプションはデフォルトでは FALSE とされている。ヌル文字をスキップしたければ、read.table(…, skipNul = TRUE) のように明示的に指定する必要がある。
  • 欠損値がないかを調べるanyNA()という新しい函数が導入された。anyNA(x)はany(is.na(x))と同様の結果を返すが、anyNA()を使った方が計算が速い。この函数については、「Rで欠損値の有無を判定する函数 anyNA()」という記事でより詳しい説明を書いたので、必要ならば参照されたい。

出力

  • 入力でUTF-8と宣言されていれば、RとLaTeXの連携ツール Sweave が出力する .tex ファイルがUTF-8として出力されるようになった。
  • pdf() でPDFにグラフなどを出力する際に、極端に小さなサイズの円やテキストは割愛されることとなった。
  • PDFやPostScriptにグラフなどを出力する際のフォントファミリーとしてArialMTが使えるようになった。例えば、以下のようなコマンドを打ち込めば、Arial MTのフォントで正規分布のグラフのPDFが出力される。
pdf("example.pdf", family="ArialMT")
plot(dnorm, -4, 4, main="Normal Distribution")
dev.off()

より大量のデータに対応

  • 列の合計を計算する colSums() が、2^31-1 (=2,147,483,647) 個以上の要素を持つ列にも対応するようになった。行の合計を計算する rowSums() も同様である。
  • 高速フーリエ変換を行う fft() という函数がより長いインプットに対応するようになった。今までは1200万個だったが、新リリースでは約20億となった。

計算がより正確に

  • 正規分布の確率密度函数を計算する dnorm(x, log = FALSE) が、x の絶対値が5より大きいとき、より正確に計算されるようになった。
  • cospi(x), sinpi(x), tanpi(x) という新函数が導入された。これらの函数は cos(pi*x), sin(pi*x), tan(pi*x) と同等のものであるが、より正確に三角函数の値を求めることができる。これにより、三角函数を内部の計算で用いる函数 [3] の値もより正確になった。
  • 階層的クラスター分析を行う hclust() 函数では、クラスターの結合方法の1つである Ward 法の実装に変更があった。バージョン3.0.3までは、hclust() 函数で method に ward と指定することで、Ward法でクラスター分析を行っていたのだが、その実装に正しくないところがあった。このため、バージョン3.1.0では ward.D2 という、Ward 法の正しい実装が導入された。hclust(…, method=”ward.D2″) と指定することで、このより正しい実装を用いることができる。なお、バージョン3.0.3までの実装で計算する必要があれば、method に ward.D を指定すればよい。つまり、hclust(…, method=”ward.D”) とするのだ。ただ、バージョン3.1.0 でも、method に ward を指定すれば、ward.D を指定したのと同じ結果が返ってくる。
脚注
  1. なお、バージョン3.0.0と3.1.0との間に3回のリビジョンが行われている。すなわち、2013年5月16日にバージョン3.0.1が、9月25日にバージョン3.0.2が、2014年3月6日にバージョン3.0.3がそれぞれリリースされている。 []
  2. Pixabay にて公開されている Stefan Schweihofer (stux)氏の手によるパブリックドメインの画像を利用。 []
  3. ベッセル函数など。 []