Rust不要の高速インストール
NOT_CRAN="true"
とオプトインすることで
Rustソースのビルドをスキップしてインストールできます。
Sys.setenv(NOT_CRAN = "true")
install.packages("polars", repos = "https://rpolars.r-universe.dev")
また、R-universe上では上記のメカニズムで
バイナリRパッケージがビルド済なので、
対応プラットフォームではバイナリインストール可能です。
余談:CRANリリースの可能性? 2/3
ちなみに、依存するRustクレートを含めたpolars
の
ソースコードの容量は30MBを超えるそうです。
通常、Rパッケージのソースコードは5MB未満になるため、
これはかなり大きいです。
これはどのくらい大きいのか?
比較のため、CRAN上のパッケージを容量順に並べてみましょう。
余談:CRANリリースの可能性? 3/3
コード
options(repos = c(CRAN = "https://cran.r-project.org/"))
packages_current <- tools:::CRAN_current_db() # data.frame
lf <- packages_current |>
tibble::as_tibble(rownames = "package_name") |>
polars::as_polars_lf()
lf$
sort("size", descending = TRUE)$
head(n = 3)$
select(
名前 = polars::pl$col("package_name")$str$replace("_.*$", ""),
`容量 (MB)` = polars::pl$col("size") %/% 10L^6
) |>
knitr::kable()
rcdklibs |
23 |
fastrmodels |
16 |
RFlocalfdr.data |
14 |
なんと、30MBを超えるパッケージは現存しません。
もしCRANリリースできたら、CRAN最大のパッケージになります。
きみもpolars
に貢献してCRAN最大のパッケージを実現させよう!
特殊なWebサイト
Rパッケージの公式ドキュメントといえばpkgdown
ですが、
pkgdown
には左サイドバーがなく、表示可能な情報量は少ないです。
大量の独自オブジェクトと
それに紐付いた大量のメソッドのナビゲーションのため
polars
はaltdoc
パッケージを介してMkDocs Materialで
ウェブサイトを構築しています。
Base R API
data.frame
を模擬した動作をするように、
Base Rの関数のいくつかのS3メソッドを実装しています。
mtcars_pl <- polars::as_polars_df(mtcars)
mtcars_pl[1:5, c("cyl", "am")]
shape: (5, 2)
┌─────┬─────┐
│ cyl ┆ am │
│ --- ┆ --- │
│ f64 ┆ f64 │
╞═════╪═════╡
│ 6.0 ┆ 1.0 │
│ 6.0 ┆ 1.0 │
│ 4.0 ┆ 1.0 │
│ 6.0 ┆ 0.0 │
│ 8.0 ┆ 0.0 │
└─────┴─────┘
tidypolars
polars
メンテナの一人でもある@etiennebacherさんが
tidypolars
というパッケージを開発されており、
dplyr
の関数をpolarsデータフレーム(とLazyFrame)に使えます。
library(dplyr, warn.conflicts = FALSE)
library(tidypolars, warn.conflicts = FALSE)
polars::as_polars_lf(mtcars) |>
summarise(across(everything(), .fns = mean), .by = "cyl") |>
arrange(cyl) |>
collect()
shape: (3, 11)
┌─────┬───────────┬────────────┬────────────┬───┬──────────┬──────────┬──────────┬──────────┐
│ cyl ┆ mpg ┆ disp ┆ hp ┆ … ┆ vs ┆ am ┆ gear ┆ carb │
│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │
│ f64 ┆ f64 ┆ f64 ┆ f64 ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │
╞═════╪═══════════╪════════════╪════════════╪═══╪══════════╪══════════╪══════════╪══════════╡
│ 4.0 ┆ 26.663636 ┆ 105.136364 ┆ 82.636364 ┆ … ┆ 0.909091 ┆ 0.727273 ┆ 4.090909 ┆ 1.545455 │
│ 6.0 ┆ 19.742857 ┆ 183.314286 ┆ 122.285714 ┆ … ┆ 0.571429 ┆ 0.428571 ┆ 3.857143 ┆ 3.428571 │
│ 8.0 ┆ 15.1 ┆ 353.1 ┆ 209.214286 ┆ … ┆ 0.0 ┆ 0.142857 ┆ 3.285714 ┆ 3.5 │
└─────┴───────────┴────────────┴────────────┴───┴──────────┴──────────┴──────────┴──────────┘