R中的data.table就地修改

时间:2015-06-21 18:24:15

标签: r data.table deep-copy

考虑如下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

来执行此操作

1 个答案:

答案 0 :(得分:2)

for (i in 1:3) DT[1:(50*i), a := sample(1:1000, 50)]

或更有意义:

DT[ , a := sample(1:1000, 150)]