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