バージョン3.1.0のリリース
2014年4月10日、R のバージョン3.1.0がリリースされた。コードネームは Spring Dance(春の踊り)である。バージョン3.0.0がリリースされたのは、2013年4月3日なので、およそ1年を経てマイナーバージョンアップが行われたことになる [1] 。
バージョン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 を指定したのと同じ結果が返ってくる。
脚注
- なお、バージョン3.0.0と3.1.0との間に3回のリビジョンが行われている。すなわち、2013年5月16日にバージョン3.0.1が、9月25日にバージョン3.0.2が、2014年3月6日にバージョン3.0.3がそれぞれリリースされている。 [↩]
- Pixabay にて公開されている Stefan Schweihofer (stux)氏の手によるパブリックドメインの画像を利用。 [↩]
- ベッセル函数など。 [↩]