約 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 ではサポートされていた記法で利用できなくなるものがある (正規表現に詳しくないので詳細割愛)
参考