我正在编写一个函数,我保存了data.table的名称,以便以后可以使用它。我发现了以下行为:
library(data.table)
x <- data.table(x=1, y=2)
nx <- names(x)
nx
# [1] "x" "y"
x[, z:=3]
nx
# [1] "x" "y" "z"
这令我感到意外,因为我知道修改data.table会通过引用更改它,我不希望存储在另一个变量中的名称也通过引用指向它!现在我知道我可以使用nx <- names(copy(x))
来解决这个问题,但似乎并非data.table
的所有方面都被这样的引用所改变。例如:
x <- data.table(x=1, y=2)
cx <- ncol(x)
cx
# [1] 2
x[, z:=3]
cx
# [1] 2
列数不会因引用而改变。使用data.table
时需要注意哪些属性以及哪些属性我不需要担心?