注意:这个问题和下面的答案引用data.table版本< 1.5.3; v。1.5.3于2011年2月发布以解决此问题。看到最近处理(03-2012):Translating SQL joins on foreign keys to R data.table syntax如何做一个data.table合并操作
我已经通过了data.table package文件(一个用于data.frame更换这是更有效的某些操作)挖掘,包括Josh Reich's presentation on SQL and data.table at the NYC R Meetup(PDF ),但不能把这个完全无关紧要的操作计算出来。
> x <- DT(a=1:3, b=2:4, key='a')
> x
a b
[1,] 1 2
[2,] 2 3
[3,] 3 4
> y <- DT(a=1:3, c=c('a','b','c'), key='a')
> y
a c
[1,] 1 a
[2,] 2 b
[3,] 3 c
> x[y]
a b
[1,] 1 2
[2,] 2 3
[3,] 3 4
> merge(x,y)
a b c
1 1 2 a
2 2 3 b
3 3 4 c
该文件说:“当[第一个参数]本身就是一个data.table,联接调用类似于基地::合并,但使用的排序键二进制搜索。”显然情况并非如此。我可以通过data.tables将y中的其他列转换为x [y]的结果吗?它似乎只是采取x的行,其中密钥匹配y的关键,但完全忽略y的其余部分...
2011年2月发布给CRAN的v1.5.3解决了这个问题。请查看它的NEWS,new?data.table和更正的常见问题解答。 – 2011-03-24 12:30:35