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

您正在执行的操作不是列的子集。

a[, v1, v2]

等于:

a[, j = v1, by = v2]

相反,您希望执行以下操作:

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

或省略j

a[, .(v1, v2)]

你可以做到,

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

最新更新