ggplot2 v3.6.0?では `theme()` で Geom の色も指定できるようになるっぽい

ちょっと前にでかめの機能追加がマージされたので、それの解説をします。と言っても、まだ機能が全部出揃ってるわけではないし(関連する主な pull request は 3 つあって、まだ 1 つ目がマージされただけ)、正式なリリースもいつになるか分からないので、プレビュー版みたいなものだと思って読んでください。

続きを読む

メモ:前処理大全 7-5「不等式条件での結合」は dplyr なら join_by() が使えるよ

少し前に改訂新版が出ましたね、前処理大全。

7-5「不等式条件での結合」は、旧版から変わっていないトピックですが、実は dplyr はこの数年の間に進化しています。 当時は非等価結合ができなかったんですが、バージョン1.1.0(2023年1月リリース)からできるようになっています。

続きを読む

ALTREP 徹底入門

R には、バージョン 3.5(2018年リリース)で導入された ALTREP という仕組みがあります。ALTREP は alternative representation の略で、たぶん「通常とは異なるメモリ上の表現」みたいな意味です。要は「普通のベクトルのように扱えるけど中身は実は別物」みたいなものをつくれますよ、というものです。

これが、導入されてもう5年も経つんですが、いまだに公式ドキュメント(Writing R Extension、R Internals)には説明がありません。 R のソースコードがあるレポジトリの、ALTREP というブランチにひっそり入っている以下のドキュメントを読むか、既存のパッケージのコードを読むぐらいしか道がないです。 自分の頭を整理する意味も込めて、わかったことをこのブログ記事にまとめます。

続きを読む

メモ:WindowsでDocker DesktopなしでDevcontainerを使うときは"Execute In WSL"の設定をオンに

宗教上の理由でDocker Desktopを入れたくないのでWSLのDockerを使っている。 当然devcontainerでもWSLを使いたいので適当にググって出てきた手順を試してたけど、なぜかWindows側のdockerが使われてうまくいかなかった(Open in WSLしてからやってもなぜかWindows側が使われる)。

なんか設定あるのかな?、と思ってDev Containers: Settingsを開くとそれっぽい項目があって、チェックを入れるとうまく動いた。

1年くらい前に実装されたものなので、それより前に書かれた記事では考慮できてなさそう。

RustからRのC APIを使う時、エラーをちゃんとハンドリングしたい

RのC APIを使う時、当然ですが任意の操作は失敗する可能性があります。 このために、RのコードでいうtryCatch()にあたるものがいくつか提供されています。

https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Condition-handling-and-cleanup-code

この中で、もっともオーバーヘッドが少ないのが R_UnwindProtect() であり、cpp11 でも extendr でも使われているものです。 しかし、これを使うにはけっこう難しい話を理解する必要があります。

続きを読む

メモ:2023年4月時点で rp-hal と rtic を使おうとして遭遇した問題

前回、大変そう、みたいなことを書いたけど、実際大変だったので遭遇した問題をメモっておく。 たぶん1年後くらいに見るとだいたい解決されてそうな気はする。

続きを読む