data.table setcolorder的异常行为

时间:2019-04-30 07:42:22

标签: r data.table

可以说我有一些数据存储为data.table对象。 我想创建此对象的备份,并使用data.tables setcolorder替换原始对象的列。 我的备份对象发生以下情况:

testdata <-  data.frame(A = 1:10, B = 2:11, C = 3:12)
setDT(testdata)
testdata_backup <-  testdata
names(testdata) # [1] "A" "B" "C"
names(testdata_backup) # [1] "A" "B" "C"
setcolorder(testdata, c("C", "B", "A"))
names(testdata) # [1] "C" "B" "A"
names(testdata_backup) # [1] "C" "B" "A"

尽管不更改testdata_backup,但诉诸于testdata看起来会产生影响testdata_backup。我想这与表处理使用的内存处理数据有关。

如果我将备份对象创建为data.frame,它将不会更改:

testdata <-  data.frame(A = 1:10, B = 2:11, C = 3:12)
setDT(testdata)
testdata_backup <-  data.frame(testdata)
names(testdata) # [1] "A" "B" "C"
names(testdata_backup) # [1] "A" "B" "C"
setcolorder(testdata, c("C", "B", "A"))
names(testdata) # [1] "C" "B" "A"
names(testdata_backup) # [1] "A" "B" "C"

这是setcolorder的故意行为吗? 我使用的功能是否错误?

0 个答案:

没有答案