Примечание: этот вопрос и следующие ответы относятся к версиям data.table < 1.5.3; v. 1.5.3 был выпущен в феврале 2011 года для решения этой проблемы. см. более позднюю обработку (03-2012): Перевод SQL-соединений по внешним ключам в синтаксис R data.table
Я просматривал документацию для data.table package (замена для data.frame, которая намного эффективнее для определенных операции), в том числе Презентация Джоша Рейха на SQL и data.table в 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, соединение вызывается аналогично базе:: merge, но использует двоичный поиск на отсортированном ключе". Ясно, что это не так. Могу ли я получить другие столбцы от y в результате x [y] с data.tables? Кажется, что он просто берет строки x, где ключ соответствует ключу y, но игнорирует остальную часть y целиком...