在按组执行操作时,使用:=以字符对象命名的列分配列

时间:2018-06-18 21:08:20

标签: r data.table

我正在使用R的数据表,并尝试在按组执行操作时分配一个列:=以字符对象命名。

如果不是由小组完成的,那么事情就是relatively straightforward

dt <- data.table(mtcars)[, .(cyl, mpg)]

thing2 <- 'mpgx2'
dt[,(thing2):=mpg*2]

但是,当我按组进行操作时,会发生错误:

DT <- data.table(V1=c(1L,2L),
                 V2=LETTERS[1:3],
                 V3=round(rnorm(4),4),
                 V4=1:12)

ghi <- "def"

DT[,.((ghi)=mean(V3)),by=V1]

具体来说,Error: unexpected '=' in "DT[,.((ghi)="

我该如何纠正这个?

1 个答案:

答案 0 :(得分:3)

我们可以使用setNames

DT[,setNames(.(mean(V3)), ghi), by = V1]
#   V1     def
#1:  1 -1.4663
#2:  2  0.0414