2012-06-27 13 views
5

Ich habe 2 Listen, jede mit mehreren Variablen (ich denke, das ist der richtige Begriff). Und ich möchte den Schnittpunkt für jede Variable finden. Sehen Sie das Beispiel unten:R Kreuzung der Listen

x<-list(A=c(1,2,3),B=c(4,5,6),C=c(7,8,9)) #input 
y<-list(A=c(1,3,6,7),B=c(5,7,8),C=c(7,9,10)) #input 
xinty<-list(A=c(1,3),B=5,C=c(7,8)) # desired output 

Ich habe Folgendes versucht, aber es ist offensichtlich falsch. Irgendwelche Vorschläge würden sehr geschätzt werden. Vielen Dank.

xinty<-lapply(x,function(x) intersect(x,y)) 
+0

möglich Duplikat [Überschneidung der Listen in R] (http://stackoverflow.com/questions/6630792/intersection-of-lists-in-r) – FoamyGuy

Antwort

4

Was:

mapply(intersect, x,y) 
+0

Danke, das funktioniert - ich denke, es war so einfach – user1249760

+0

Beachten Sie, dass dies fehlschlägt, wenn Ihre Listen nicht die gleiche Länge haben, und es wird nach Position in der Liste und nicht nach Name gemacht - dh x [[1]] wird geschnitten mit y [[1]], nicht x $ A mit y $ A, es sei denn, sie sind in der gleichen Reihenfolge wie in Ihrem Beispiel – Spacedman