更新data.table的多个列

Jua*_*tro 11 r data.table

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

就像是

dt[,onecol:=1 anothercol:=2]
Run Code Online (Sandbox Code Playgroud)

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

dt[,c("onecol","anothercol"):=1]
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*ien 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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

搜索"Multiple LHS" 的当前data.table NEWS文件,看看这也适用于by=参数.