我想将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 ,而不是列名。

08-07 03:38