我遇到了set()到#34; old"的不同行为。和"新" data.table中的列
情况非常简单,我可能会错过一些非常基本的东西。
library(data.table)
id <- c(1:10)
x1 <- sample(1:10, 10, replace=T)
x2 <- sample(1:10, 10, replace=T)
df<-data.frame(id,x1,x2)
dt<-data.table(df)
setkeyv(dt,c("id"))
&#34; old&#34;列集效果很好
set(dt,i=(which(x1>5)),j="x2",value=0)
当我添加新列时,set
无法识别它dt[,x4:=x1+x2]
set(dt,i=(which(x4>5)),j="x2",value=0)
Error in which(x4 > 5) : object 'x4' not found
查看dt的结构,它包含新列,我可以使用它,计算它的平均值等但是set()没有看到它。为什么呢?