更新data.table的多个列

时间:2012-12-18 19:57:59

标签: r data.table

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

这样的东西
dt[,onecol:=1 anothercol:=2]

我见过他们做过的一些例子

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

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

1 个答案:

答案 0 :(得分: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

the current data.table NEWS file搜索“多个LHS”,看看这也适用于by=参数。