当b
的列名在分配后更改时,变量a
发生了变化。
> a=data.table(x1=1:2,x2=2:3)
> a
x1 x2
1: 1 2
2: 2 3
> b=names(a)
> b
[1] "x1" "x2"
> setcolorder(a,2:1)
> a
x2 x1
1: 2 1
2: 3 2
> b
[1] "x2" "x1"
我的版本是1.9.2。
答案 0 :(得分:1)
这是一种已知行为,不会被视为错误。在这种情况下,您应该使用copy
:
a <- data.table(x1=1:2,x2=2:3)
b <- copy(names(a))
b
# [1] "x1" "x2"
setcolorder(a, 2:1)
b
# [1] "x1" "x2"
此问题的更多信息和变体也可以在?copy
文档的“示例”部分找到。