Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查找data.table和vector_R_Data.table - Fatal编程技术网

如何查找data.table和vector

如何查找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中,可以为向量中指定的多个列赋值。通过这

我希望以这样一种方式来绑定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[,(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]