2015-06-21 8 views
0

Рассмотрите data.tableDT следующим образом.data.table на месте модификация в R

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 для follwing метода.

DT$a[1:50] <- a1 
identical(address(DT), ad) 

Как это сделать с помощью data.table избежать копирования DT?

+2

'DT [1:50, a1: = образец (1: 1000, 50)]'? – grrgrrbla

ответ

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

или которое имеет смысл:

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