从data.table分配的对象仍然是#34;链接"到那个data.table

时间:2017-03-23 19:57:01

标签: r

我对data.table相对较新,老实说,不要太多使用它,但有时它非常有用。我最近遇到了这个[我觉得很奇怪]。我只是想将一些名称保留为后来更改的单独对象,但是当我更改dt名称时会对这些名称进行修改。

dt <- data.table(A = 1:3, B = letters[1:3], foo = paste0("bar", "baz", "bee"))

oldNames <- names(dt)
setnames(dt, c("A", "B"), c("notA", "notB"))
newNames <- names(dt)

如果oldNames是一个单独的实体,那么这应该是FALSE

all(oldNames == newNames)
# [1] TRUE

似乎已被修改......

> print(oldNames)
[1] "notA" "notB" "foo" 

似乎没有任何迹象表明它仍然与dt

相关联
class(oldNames) 
# [1] "character"

只是想知道这里发生了什么。修改oldNames时,为什么dt对象发生了变化?它不应该是一个独立的对象吗?如果他们愿意,怎么会打破这个链接呢?

1 个答案:

答案 0 :(得分:0)

制作对象的副本,以便在修改其引用时进行更改。

MY_PACKAGE_REPLACE