data.table中setcolorder函数的错误?

时间:2015-01-06 19:58:54

标签: r data.table

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。

1 个答案:

答案 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文档的“示例”部分找到。