【发布时间】:2014-06-04 11:02:46
【问题描述】:
我正在尝试更新 data.table 的特定条目。我的 i 子集是另一个 data.table。当我尝试向 := 命令传递一个与子集长度相同的向量时,我收到一条警告。我可以用循环解决这个问题,但我认为有更好的方法。这段代码复制了我的结果:
DT <- data.table(ID = 1:10,V = rnorm(10))
setkey(DT,ID)
DT.alt <- DT[ID < 5,] ##Create a data.table with a subset of the observations
setkey(DT.alt,ID)
DT[,V:=rnorm(10)] ## Works
DT[DT.alt,V:=rnorm(1)] ## Works
DT[DT.alt,V:=rnorm(4)] ## Warning and the first element is used for all rows
请注意,这可行,但我真的需要循环吗?
for(i in 1:dim(DT.alt)[1]) DT[DT.alt[i,],V:=rnorm(1)]
我认为我做错了什么,感谢任何帮助。
【问题讨论】:
-
我使用来自 r-forge 的
data.table版本 1.9.3 没有错误。您使用的是哪个软件包版本? -
是的,我使用的是 1.9.2,应该说明这一点。
标签: r data.table