R data.table 通过引用更改其他变量的值

pur*_*e51 5 r data.table

我在 R 中使用 data.table 并得到非常不直观的行为:更改 data.table,例如,添加列“C”,更改已设置的变量的,该变量存储之前的列名。

我希望nm保持为"A" "B",而不是更改为"A" "B" "C"

这种行为有什么解释吗?

谢谢

> library(data.table)
data.table 1.12.8 using 16 threads (see ?getDTthreads).  Latest news: r-datatable.com
> d <- data.table(A=1, B=2)
> (nm <- colnames(d))
[1] "A" "B"
> d[, C := 3]
> nm
[1] "A" "B" "C"


> sessionInfo()
R version 3.6.3 (2020-02-29)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.4 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/libopenblasp-r0.2.20.so

locale:
 [1] LC_CTYPE=en_AU.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_AU.UTF-8        LC_COLLATE=en_AU.UTF-8
 [5] LC_MONETARY=en_AU.UTF-8    LC_MESSAGES=en_AU.UTF-8
 [7] LC_PAPER=en_AU.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] data.table_1.12.8
Run Code Online (Sandbox Code Playgroud)