使用 copy() 複製另一個 data.table

# example data
DT1 = data.table(x = letters[1:2], y = 1:2, z = (1:2) > 3)

由於 data.tables 的操作方式,DT2 <- DT1 不會複製。也就是說,以後對 DT2 的列或其他屬性的修改也會影響 DT1。如果需要真實副本,請使用

DT2 = copy(DT1)

要看到差異,這裡是沒有副本的情況:

DT2 <- DT1
DT2[, w := 1:2]

DT1
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2
DT2
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2

並附上副本:

DT2 <- copy(DT1)
DT2[, w := 1:2]

DT1
#    x y     z
# 1: a 1 FALSE
# 2: b 2 FALSE
DT2
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2

因此,在後一種情況下,變化不會傳播。