如何在没有自动排序行的情况下调用data.table的基于列的子集?

时间:2016-05-22 07:04:46

标签: r data.table

当我尝试调用data.table的基于列的子集时,它会自动对行进行排序,有关如何避免这种情况的任何想法吗?

a=data.table(v1=rep(c(-1,0,1),3), v2=rep(c(-1,0,1),3))
head(a)
   v1 v2
1: -1 -1
2:  0  0
3:  1  1
4: -1 -1
5:  0  0
6:  1  1
head(a[,v1,v2])
   v2 v1
1: -1 -1
2: -1 -1
3: -1 -1
4:  0  0
5:  0  0
6:  0  0

2 个答案:

答案 0 :(得分:2)

您所做的不是列的子集。

a[, v1, v2]

等于:

a[, j = v1, by = v2]

相反,你想要这样做:

a[, j = .(v1, v2)]

或省略j

a[, .(v1, v2)]

答案 1 :(得分:1)

你可以,

head(a[,.(v2,v1)])
#   v2 v1
#1: -1 -1
#2:  0  0
#3:  1  1
#4: -1 -1
#5:  0  0
#6:  1  1