如果我将 n 列指定为 a 的键data.table
,我知道只要加入 of ,我就可以加入比该键中定义的更少的head
列key(DT)
。例如,对于 n=2 :
X = data.table(A=rep(1:5, each=2), B=rep(1:2, each=5), key=c('A','B'))
X
A B
1: 1 1
2: 1 1
3: 2 1
4: 2 1
5: 3 1
6: 3 2
7: 4 2
8: 4 2
9: 5 2
10: 5 2
X[J(3)]
A B
1: 3 1
2: 3 2
在那里,我只加入了 2 列键的第一列DT
。我知道我可以像这样加入键的两列:
X[J(3,1)]
A B
1: 3 1
但是我如何仅使用键的第二列(例如B==2
)进行子集化,但仍然使用二进制搜索而不是矢量扫描?我知道这是重复的:
仅通过 2 列键的第 2 列对 data.table 进行子集,使用二进制搜索而不是矢量扫描
所以我想把这个问题概括为n
. 我的数据集有大约一百万行,上面链接的 dup 问题中提供的解决方案似乎不是最佳的。