R data.table在非目标data.tables中生成列

R data.table在非目标data.tables中生成列,r,data.table,R,Data.table,这似乎是非常不可取的行为。假设我创建了一个data.table a,其中包含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.0904

这似乎是非常不可取的行为。假设我创建了一个data.table a,其中包含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
b b
b <- a
b[,new.var := x*y]
> 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