data.table 在 R 中就地修改
data.table in place modification in R
考虑一个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
?
for (i in 1:3) DT[1:(50*i), a := sample(1:1000, 50)]
或者哪个更有意义:
DT[ , a := sample(1:1000, 150)]
考虑一个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
?
for (i in 1:3) DT[1:(50*i), a := sample(1:1000, 50)]
或者哪个更有意义:
DT[ , a := sample(1:1000, 150)]