примечание: этот вопрос и последующие ответы относятся к data.table версии < 1.5.3; v. 1.5.3 был выпущен в феврале 2011 года для решения этой проблемы. увидеть более недавнее лечение (03-2012): Translating SQL joins on foreign keys to R data.table syntaxКак выполнить операцию слияния данных.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, объединение вызываются аналогично базировать :: слияние, но использует бинарный поиск по отсортированному ключу.» Ясно, что это не так. Могу ли я получить другие столбцы от y в результате x [y] с data.tables? Кажется, что он просто берет строки x, где ключ совпадает с ключом y, но игнорирует остальную часть y целиком ...
Это было разрешено v1.5.3 выпущено в CRAN в феврале 2011 года. См. Его НОВОСТИ, новые данные.table и исправленные FAQ. –