remarque: cette question et les réponses suivantes se référer à des données.tableau des versions < 1.5.3; v. 1.5.3 a été publié en Février 2011 pour résoudre ce problème. voir plus récentes de traitement (03-2012): la Traduction des jointures SQL sur les clés étrangères pour R des données.syntaxe de tableau
J'ai été fouiller dans la documentation pour les données.tableau paquet (un remplaçant pour les données.cadre qui est beaucoup plus efficace pour certaines opérations), y compris Josh Reich présentation sur SQL et des données.table à NYC R Meetup (pdf), mais ne peut pas trouver cela totalement banale opération de l'extérieur.
> 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 que "Lorsque [le premier argument] est lui-même un ensemble de données.table, une jointure est invoquée similaire à la base: fusion, mais utilise les binaires de recherche sur le tri de la clé." Clairement, ce n'est pas le cas. Puis-je obtenir de l'autre les colonnes de y dans la suite de x[y] avec les données.les tables? Il semble que c'est juste de prendre les lignes de x, où la clé correspondant à la clé de y, mais en ignorant le reste de y tout à fait...