使用 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
因此,在后一种情况下,变化不会传播。