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