約 1 ヶ月ほど前に R-4.0.0 がリリースされた。
メジャーバージョンアップということで、いくつか破壊的な変更があるようだ。
今後、本格的に移行していくのに備えて、実際の挙動を確認しておきたい。
尚、この記事には新機能の紹介は含まれていない。また、破壊的な変更点も何か漏れがあるかもしれない。気になる方は CHANGES IN 4.0.0 をご覧いただきたい。
stringsAsFactors = FALSE がデフォルトに
- もともと嫌われることの多かったこの仕様が、遂にデフォルトで
FALSE になる。
- tidyverse の
{tibble} や {readr} を使って data.frame を作成・読み込みしていたのなら影響はない。
1
2
|
df <- data.frame(letters = letters)
str(df)
|
1
2
|
'data.frame': 26 obs. of 1 variable:
$ letters: chr "a" "b" "c" "d" ...
|
- デフォルトを
TRUE に変更しようとすると Warning が出る。将来的にはこのオプション自体がなくなる可能性もありそう。
1
|
options(stringsAsFactors = TRUE)
|
1
2
3
|
Warning message:
In options(stringsAsFactors = TRUE) :
'options(stringsAsFactors = TRUE)' is deprecated and will be disabled
|
- 注意すべきケース
data.frame() や read.csv() を使っていて、明示的に stringsAsFactors を指定していない場合
matrix が array を継承するようになる
matrix は 2d の array なので、自然な変更
1
2
|
matrix_obj <- matrix()
class(matrix_obj)
|
- 注意すべきケース
class(matrix_obj) の結果として length 1 を期待している場合
array の S3 メソッドを利用しているが matrix の S3 が存在している場合 (matrix の S3 が呼ばれてしまう)
plot() ジェネリック関数が {graphics} から {base} へ移動
- 互換性を維持するために、現時点では
{graphics} からも re-export されているが、今後は廃止される可能性がある
1
|
<environment: namespace:base>
|
- 注意すべきケース
{graphics} から plot を Import しているパッケージを開発している場合
正規表現ライブラリが PCRE1 から PCRE2 へ移行
- PCRE1 は既に開発が終了しているため
- PCRE = Perl 5 compatible Regular Expression Library
- PCRE1: PCRE <= 8
- PCRE2: PCRE >= 10
1
|
extSoftVersion()["PCRE"]
|
1
2
|
PCRE
"10.31 2018-02-12"
|
- 注意すべきケース
- PCRE1 ではサポートされていた記法で利用できなくなるものがある (正規表現に詳しくないので詳細割愛)
参考