当我尝试调用基于列的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