这似乎是非常不受欢迎的行为。可以说我创建了一个数据列a
,其中包含列x
和y
。
library(data.table)
x <- rnorm(100)
y <- rnorm(100)
a <- data.table(x,y)
我想在此data.table的列上执行一些计算,同时保留数据的“干净”副本。因此,我创建了一个新的data.table对象b
,并执行了一些计算,这些操作会在data.table b
中生成新的列:
b <- a
b[,new.var := x*y]
此新变量new.var
出现在两个data.table对象a
和b
中。我从未告诉过a
创建此列,它似乎是从b
自动添加的。我的问题是,为什么这是理想的行为?每个数据表的标题如下:
> head(a)
y x new.var
1: 0.1369316 -2.0992072 -0.2874478
2: -0.1074927 -0.8418876 0.0904968
3: -0.8530955 -1.3860180 1.1824057
4: -1.8503559 0.3464916 -0.6411328
5: -0.9671240 -2.7080326 2.6190034
6: 1.8149524 -1.3655645 -2.4784345
> head(b)
y x new.var
1: 0.1369316 -2.0992072 -0.2874478
2: -0.1074927 -0.8418876 0.0904968
3: -0.8530955 -1.3860180 1.1824057
4: -1.8503559 0.3464916 -0.6411328
5: -0.9671240 -2.7080326 2.6190034
6: 1.8149524 -1.3655645 -2.4784345