note: cette question et les réponses suivantes se rapportent à data.table versions < 1.5.3; v. 1.5.3 a été publié en février 2011 pour résoudre ce problème. voir un traitement plus récent (03-2012): Translating SQL joins on foreign keys to R data.table syntaxComment faire une opération de fusion de données.table
J'ai fouillais dans la documentation du data.table package (remplacement de data.frame qui est beaucoup plus efficace pour certaines opérations), y compris Josh Reich's presentation on SQL and data.table at the NYC R Meetup (pdf), mais ne peut pas comprendre cette opération totalement triviale.
> 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
Les docs disent « Quand [le premier argument] est lui-même un data.table, une jointure est appelée similaire à la base :: fusion, mais utilise la recherche binaire sur la clé de tri. » Clairement ce n'est pas le cas. Puis-je obtenir les autres colonnes de y dans le résultat de x [y] avec data.tables? Il semble que ce soit juste en prenant les lignes de x où la touche correspond à la clé de y, mais en ignorant le reste de y entièrement ...
Ceci a été résolu par v1.5.3 publié à CRAN en février 2011. S'il vous plaît voir c'est NEWS, nouvelle? Data.table et FAQ corrigé. –