如何查找data.table和vector
我希望以这样一种方式来绑定data.table和向量,即向量内容成为data.table的新列,并具有零值如何查找data.table和vector,r,data.table,R,Data.table,我希望以这样一种方式来绑定data.table和向量,即向量内容成为data.table的新列,并具有零值 DT <- data.table(x=c("A", "B", "C", "D", "E", "F"), y = rnorm(6)) DT2 <- c("paper11grid1", "paper12grid1", "paper13grid1") cbind直接将DT2添加为一列 cbind(DT, DT2) 在data.table中,可以为向量中指定的多个列赋值。通过这
DT <- data.table(x=c("A", "B", "C", "D", "E", "F"), y = rnorm(6))
DT2 <- c("paper11grid1", "paper12grid1", "paper13grid1")
cbind直接将DT2添加为一列
cbind(DT, DT2)
在
data.table
中,可以为向量中指定的多个列赋值。通过这种方法,您的答案如下所示:
DT[,(DT2) := 0]
需要注意的一个区别是:尽管
DT2
是一个有效的向量,DT[,DT2:=0]
只会产生一个名为DT2
的新列。这与在[…]
中计算列名的方式有关。通过使用括号--(DT2)
--在括号内,[.data.table
将把DT2
计算为一个向量,而不是一个列名。Btw,cbind
用于创建一个新表,但您想“更新…DT”,这就是为什么您要使用:=如Matt的回答中所示。没有c
Thank@Frank,括号就足够了。我似乎总是有更多的东西要向您学习。查看[.data.table
现在,括号是否总是首先触发对父环境中的内容求值的尝试,还是比这更细微一些?我认为它会查看`:=`(lhs,rhs)
并检查lhs
是否是符号。如果不是,它会求值并查找列名或位置的向量。
DT[,(DT2) := 0]