11

是否可以在同一语句中更新超过 1 列的 data.table?

就像是

dt[,onecol:=1 anothercol:=2]

我看过一些他们做的例子

dt[,c("onecol","anothercol"):=1]

但我不知道如何为每一列分配不同的公式

4

1 回答 1

9

是的,从 1.8.4 版本开始就可以做到这一点:

library(data.table)
dt <- data.table(a=1:4, b=4:1)
dt[,c("a", "b") := list(min(a), max(b))]
# dt
#    a b
# 1: 1 4
# 2: 1 4
# 3: 1 4
# 4: 1 4

或者,以更易读的方式做同样的事情:

dt <- data.table(a=1:4, b=4:1)
dt[,`:=`(a = min(a),
         b = max(a))]
dt
#    a b
# 1: 1 4
# 2: 1 4
# 3: 1 4
# 4: 1 4

在当前 data.table NEWS 文件中搜索“Multiple LHS”以查看这也适用于by=参数。

于 2012-12-18T20:15:08.767 回答