約 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 を指定していない場合

matrixarray を継承するようになる

  • matrix は 2d の array なので、自然な変更
1
2
matrix_obj <- matrix()
class(matrix_obj)
1
[1] "matrix" "array"


  • 注意すべきケース
    • class(matrix_obj) の結果として length 1 を期待している場合
    • array の S3 メソッドを利用しているが matrix の S3 が存在している場合 (matrix の S3 が呼ばれてしまう)

plot() ジェネリック関数が {graphics} から {base} へ移動

  • 互換性を維持するために、現時点では {graphics} からも re-export されているが、今後は廃止される可能性がある
1
environment(plot)
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 ではサポートされていた記法で利用できなくなるものがある (正規表現に詳しくないので詳細割愛)

参考