Error in as.double(y): cannot coerce type 'environment' to vector of type 'double'
新しいPolars Rパッケージの紹介
2025-12-06 Japan.R 2025
@eitsupi
久しぶりに発表させてもらうので、
関連するこれまでの発表を振り返ってみましょう!
あの人いつもdplyr周りの話してる……。
1年かけてpolarsパッケージを完全に書き直したので12、
改めて紹介したい!
(良い感じのベンチマーク結果を入れたかったページ)
#> # A tibble: 7 × 6
#> expression min median `itr/sec` mem_alloc `gc/sec`
#> <bch:expr> <bch:tm> <bch:tm> <dbl> <bch:byt> <dbl>
#> 1 acero_dplyr 149.7ms 156.1ms 6.25 41.83MB 0
#> 2 duckdb_dbplyr 109.4ms 113.7ms 8.35 24.18MB 2.09
#> 3 duckdb_duckplyr 62.8ms 69.1ms 14.4 3.71MB 0
#> 4 duckdb 59.6ms 61.5ms 14.9 4.9KB 0
#> 5 sedonadb 56.8ms 73.1ms 13.6 6.7MB 0
#> 6 polars_tidypolars 62.4ms 67.2ms 13.5 13.15MB 2.26
#> 7 polars 50ms 53.2ms 18.8 99.51KB 0先んじてZennに記事を投稿済なので、そちらをご確認ください!
何この構文!?
CRAN上のRustは半年以上1.81.0から動いていない。
vctrs::unspecified()hms::hms()blob::blob()日時型のパッケージとして最も表現力の高い(※私調べ)
clockパッケージをサポートしているのは現時点でpolarsのみ
新しくて単純なクラスのS7への移行から開始
従来のpolarsオブジェクト:環境型にS3クラス属性を付けたもの
is.environment()がTRUEになるError in as.double(y): cannot coerce type 'environment' to vector of type 'double'
↑のように謎のエラーが発生し、plot()関数を使えない!
is.environment()による判定が行われており、as.data.frame()まで到達できない
演算子
S7を採用することで良い感じに書けるようになりそう
今日はPolarsという名前だけでも覚えて帰ってください
ついでに気軽にインストールして試してみてください!
1人でやったわけではなく、Etienne Bacherさんもめっちゃ作業してくださった。
旧実装からそのままコピーしただけの部分もある。
Polars is one of the fastest DataFrame libraries at the time of writing.
https://datafusion.apache.org/user-guide/faq.html,
2025-12-06閲覧
Rust側から自動生成されたRコードをもう一段階ラップしているため大変ではある。
#Japan.R 2025