今天看到 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 给上游,已被光速合并。