我有一个简单的问题,我想用data.table
来解决.我对以下行为感到惊讶,因为我认为,在R中的分配总是复制:
library(data.table)
df <- data.frame(
t = 1:10,
x = "x",
y = "y"
)
df$z <- df$y # I was assuming this is a full blown copy (since done in base R)
setDT(df)
df[t>=5, `:=`(z=x)]
df
最后,我希望在第z
列中,有x
的副本,在t>=5
的情况下,还有y
的副本,否则.然而,y
也发生了变化,这让我感到惊讶.这样做的原因是什么?
t x y z
1: 1 x y y
2: 2 x y y
3: 3 x y y
4: 4 x y y
5: 5 x x x
6: 6 x x x
7: 7 x x x
8: 8 x x x
9: 9 x x x
10: 10 x x x