考虑如下data.table
DT
。
DT <- iris
setDT(DT)
ad <- address(DT)
DT[, a := NA_integer_]
identical(address(DT), ad)
我试图使用循环在DT$a
中依次插入一些信息。
a1 <- sample(1:1000, 50)
a2 <- sample(1:1000, 50)
a3 <- sample(1:1000, 50)
正如您所看到的,这会导致复制DT
以用于后续方法。
DT$a[1:50] <- a1
identical(address(DT), ad)
如何使用data.table
避免复制DT
?
答案 0 :(得分:2)
for (i in 1:3) DT[1:(50*i), a := sample(1:1000, 50)]
或更有意义:
DT[ , a := sample(1:1000, 150)]