注意:本问题和以下答案是针对data.table版本<1.5.3的;v.1.5.3于2011年2月发布,解决了这个问题。请参阅更近期的处理(03-2012):将基于外键的SQL连接翻译为R data.table语法
我一直在查找data.table包的文档(它是data.frame的替代品,在某些操作上更加高效),包括Josh Reich在纽约R Meetup上关于SQL和data.table的演示(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时,会调用类似于base::merge的连接,但是使用已排序键的二分查找。”很明显这并不是这种情况。我能否使用data.table将y的其他列添加到x[y]结果中?它似乎只是取出x中与y键匹配的行,但完全忽略了y的其余部分...