data.table 在 R 中就地修改

data.table in place modification in R

考虑一个data.tableDT如下。

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

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

或者哪个更有意义:

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