我想将data.table和一个 vector 绑定(bind)在一起,以使 vector 内容成为具有零值的data.table的新列。
DT <- data.table(x=c("A", "B", "C", "D", "E", "F"), y = rnorm(6))
DT2 <- c("paper11grid1", "paper12grid1", "paper13grid1")
我想将DT2的内容更新为DT的新列名
x y paper11grid1 paper12grid1 paper13grid1
A 0.9643131 0 0 0
B -0.8856350 0 0 0
C -0.1489705 0 0 0
D 2.0675105 0 0 0
E -1.2965938 0 0 0
F -0.8468514 0 0 0
直接进行绑定(bind)只会将DT2添加为一个列
cbind(DT, DT2)
最佳答案
在data.table
中,您可以将值分配给 vector 中指定的多个列。使用这种方法,您的答案很简单,如下所示:
DT[,(DT2) := 0]
需要注意的一个区别是:尽管
DT2
是有效的 vector ,但DT[, DT2 := 0]
只会简单地产生一个名为DT2
的新列。这与在[...]
中评估列名的方式有关。通过在括号内使用括号(DT2)
,[.data.table
在这种情况下会将DT2
评估为 vector ,而不是列名。