今天看到 data.table 在 CRAN 上更新了 1.17.0 版本,加入 rowwiseDT()
这个万众期待的 QoL 功能,支持按行而不是按列从原始数据手动构造数据框,贡献来自本坛版主 @shrektan 五年前的 PR#4291。语法设计得很好,例子也很经典:
library(data.table)
rowwiseDT(
a = , b = , c = , d = ,
1, 2, "a", 2:3,
3, 4, "b", list("e"),
5, 6, "c", ~ a + b
)
#> a b c d
#> <num> <num> <char> <list>
#> 1: 1 2 a 2,3
#> 2: 3 4 b e
#> 3: 5 6 c ~a + b
说实话,这个功能早就该有了——因为虽然按列构造在数学上是自然的,但按行构造可以让代码的外观与表格的结构完全对应,这在很多现实用例中是非常必要的。
同时我也发现 NEWS.md
中的示例由于多了一个末尾的逗号无法直接运行(并不是 Python ),所以发了一个PR#6836 给上游,已被光速合并。