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

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

バージョン3.3.0のリリース

2016年5月3日、R のバージョン3.3.0がリリースされた。コードネームは Supposedly Educational(たぶん教育的)である。バージョン3.2.0がリリースされたのは、2015年4月16日なので、およそ1年を経てマイナーバージョンアップが行われたことになる [1] 。このバージョン3.3.0は本来4月中にリリースされる予定 [2] だったが、問題が発見されたためにリリースが5月に延期された [3]

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

Rのバージョン3.2.0のコードネームは Supposedly Educational(たぶん教育的)である。
Rのバージョン3.2.0のコードネームは Supposedly Educational(たぶん教育的)である [4]

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

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

文字列処理

x <- c(5, 42, 173, NA)
nchar(x) # 結果は 1 2 3 NA
nchar(x, type="width") # 結果は 1 2 3 2
nchar(x, keepNA=T) # 結果は 1 2 3 NA
nchar(x, type="width", keepNA=T) # 結果は 1 2 3 NA
nchar(x, keepNA=F) # 結果は 1 2 3 2
nchar(x, type="width", keepNA=F) # 結果は 1 2 3 2
strrep("piyo", 2)
# 結果は "piyopiyo"
rep("piyo", 2)
# 結果は "piyo" "piyo"

strrep("piyo", 1:3)
# 結果は "piyo" "piyopiyo" "piyopiyopiyo"
strrep(c("piyo", "fuga"), 2)
# 結果は "piyopiyo" "fugafuga"
strrep(c("piyo", "fuga"), c(3,4))
# 結果は "piyopiyopiyo" "fugafugafugafuga"
startsWith("category", "cat") # TRUE
startsWith("dimension", "cat") # FALSE
endsWith("perform", "per") # FALSE
endsWith("newspaper", "per") # TRUE
x <- c("hoge and piyo",
       "foo or bar",
       "fuga or moge")
pattern <- " (and|or) "
# 文字列ベクトル x の個々の要素の中で " and " か " or "にマッチする最初の位置を取得する
match <- regexpr(pattern, x)
regmatches(x, match, invert=NA)
# 以下の結果が返る
# [[1]]
# [1] "hoge"  " and " "piyo" 
# 
# [[2]]
# [1] "foo"  " or " "bar" 
# 
# [[3]]
# [1] "fuga" " or " "moge"
regmatches(x, match)
# 以下の結果が返る
# [1] " and " " or "  " or " 
regmatches(x, match, invert=T)
# 以下の結果が返る
# [[1]]
# [1] "hoge" "piyo"
# 
# [[2]]
# [1] "foo" "bar"
# 
# [[3]]
# [1] "fuga" "moge"

統計処理

# iris データから線形モデルを作る
model1 <- lm(Petal.Length ~ Sepal.Length, data=iris)
# 作成された線形モデルの概要を表示する
summary(model1)
# 作成された線形モデルから残差の標準偏差を取り出す
sigma(model1)

描画

VADeaths データセットをもとにした点グラフ。dotchart(VADeaths) で出力。
VADeaths データセットをもとにした点グラフ。dotchart(VADeaths) で出力。
VADeaths データセットをもとにした点グラフの点を大きくしたもの。dotchart(VADeaths, pt.cex = 2) で出力。
VADeaths データセットをもとにした点グラフの点を大きくしたもの。dotchart(VADeaths, pt.cex = 2) で出力。

データフレーム

x <- 1:3
y <- c(F, T, F)
z <- c("a", "b", "c")
# 列名を明示せずにデータフレームを作る
# デフォルトでは、列名が自動的に付けられる
df1 <- data.frame(x, y, z)
colnames(df1) # 結果は "x" "y" "z"
# 列名を明示せずにデータフレームを作り、
# さらに自動的に列名を付けないように指定する
df2 <- data.frame(x, y, z, fix.empty.names=F)
colnames(df2) # 結果は "" "" ""

数値計算

# Dの引数として適切なものを f に入れる
# f には x の3乗が入っている
f <- expression(x^3)
D(f, "x") # x の3乗を x で微分した結果として、3 * x^2 が返る
# Dの引数として適切でないものを g に入れる
g <- "hoge"
D(g, "x") # エラーが返る

プログラミング

# mean は S3総称函数なので、FALSEが返される
isS3method("mean")
# mean.Date は S3メソッドなので、TRUEが返される
isS3method("mean.Date")
脚注
  1. なお、バージョン3.2.0と3.3.0との間に6回のリビジョンが行われている。すなわち、2015年6月18日にバージョン3.2.1が、8月14日にバージョン3.2.2が、12月10日にバージョン3.2.3が、2016年3月10日にバージョン3.2.4が、3月16日にバージョン3.2.4-revisedが、4月14日にバージョン3.2.5がそれぞれリリースされている。 []
  2. R 3.2.4 and 3.3.0 []
  3. Extending the beta period for R 3.3.0 till April 25, Final release on May 3 []
  4. Pixabay にて公開されている Jonny Lindner (Comfreak)氏の手によるパブリックドメインの画像を利用。 []
  5. 類似した函数として、validEnc も新しく導入された。 []
  6. S3とは、Rにおけるオブジェクト指向プログラミングシステムの1つである。なお、S3総称函数かどうかを調べたければ、pryr パッケージの ftype 函数を使えばよい。また、S3オブジェクトであるかを調べたければ、pryr パッケージの otype 函数を使えばよい。 []