使用 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

因此,在后一种情况下,变化不会传播。