note: this question and the following answers refer to data.table versions < 1.5.3; v. 1.5.3 was released in Feb 2011 to resolve this issue.见近期治疗(2012年3月):Translating SQL joins on foreign keys to R data.table syntax
我一直在翻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时,会调用类似于base::merge的连接,但会对排序键进行二进制搜索."显然情况并非如此.我可以用数据把y中的其他列转换成x[y]的结果吗.桌子?它似乎只取x的键与y的键匹配的行,但完全忽略y的其余部分...