我对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
对象发生了变化?它不应该是一个独立的对象吗?如果他们愿意,怎么会打破这个链接呢?
答案 0 :(得分:0)
制作对象的副本,以便在修改其引用时进行更改。
MY_PACKAGE_REPLACE