当我尝试调用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
答案 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