使用 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
因此,在後一種情況下,變化不會傳播。