あたらしい「R 4.0.0」の主な新機能と変更点の紹介 part 1
自動車会社に転職後、Pythonを利用した開発が続いたこともあり、しばらくRから離れていました。その間にRもバージョンが4となりました。隔世の感があります。 自分としては積極的にこれからは R を使って行こうと考えています。そこでリハビリも兼ねてどのような変更があったのかを少しずつキャッチアップしていきたい。変更点はNEWS https://cran.r-project.org/doc/manuals/r-release/NEWS.html に纏められているので、ここを丹念に読みます。正確な情報はこちらを見てください。
まずは SIGNIFICANT USER-VISIBLE CHANGES partから。
* Rのこのバージョン(4.0.0)では、パッケージを(再)インストールする必要があります。
なぜかは後に理由が書いてあります。
* matrix オブジェクトは class “array” も継承するようになりました。class(diag(1)) は c(“matrix”, “array”) を返します。これにより、class(matrix_obj))が長さ1を持つと仮定するコードは間違いになります。array “クラスのS3メソッドが、行列オブジェクトに対してディスパッチされるようになりました。
S3メソッドと配列の復習は下より。
Arrayは多次元を扱うはずで、行列オブジェクトとしてディスパッチしても大丈夫なのかな?行列は次元属性 dim が長さ2の配列に他ならないはずだから大丈夫か。
* C++ で使用されているものと同様の raw 文字定数を指定する新しい構文があります: “r(…)”
シーケンス”)”を含まない任意の文字列です。 これにより、バックスラッシュを含む文字列や、シングルクォートとダブルクォートの両方を含む文字列を簡単に書くことができます。詳細は?Quotesを参照してください。
## A Windows path written as a raw string constant:
r"(c:\Program files\R)"
## More raw strings:
r"{(\1\2)}"
r"(use both "double" and 'single' quotes)"
r"---(\1--)-)---"
こういうQuotingができるようになっている。Pathの記述や正規表現書くのに便利そう。
* RはstringsAsFactors = FALSEをデフォルトで使用するようになりました。したがって、デフォルトではdata.frame()やread.table()の呼び出しにおいて、文字列をfactorに変換しないようになりました。多くのパッケージが以前の動作に依存しているため、更新が必要となりました。
factor は他の言語ではなかなか見られない型ですね。解析する際は便利ですが、データ整理の段階では期待とちがった動作をすることがあるため注意が必要です。data.frame()やread.table()は使用頻度が高い。確かにこの変更によりパッケージの再インストールは必要になりますね。
* S3 の汎用関数 plot() は graphics パッケージではなく base パッケージになりました。グラフィックスパッケージを使用しないメソッドを持つことが合理的だからです。 ジェネリック関数は現在、 graphics 名前空間からインポートされたパッケージが引き続き動作するように再エクスポートされています。これは将来的に変更される可能性があります。
plot()にS4ジェネリックを定義しているパッケージは再インストールする必要があり、他のパッケージからそのようなジェネリックを使用するパッケージコードは、検索パスでの検索に頼るのではなく、確実にインポートする必要があります(名前空間において、名前空間baseは検索パスよりも優先されます)。
確かにbase packageになってます。自作のクラスでplot() genericsを使用できるようにしている場合はインポートするように注意しておこう。
次回はリファレンスカウンティングの変更点とPCRE2へのマイグレーションについて紹介予定です。
-
前の記事
記事がありません
-
次の記事
あたらしい「R 4.0.0」の主な新機能と変更点の紹介 part 2 2021.05.06