Wie ich es verstehe, vergleicht setdiff()
zwei Vektoren und gibt die Elemente, die in einem Vektor auftreten, aber nicht in den anderen auftreten. Wenn das so ist, dann geben diese Vektoren ...Unerwartetes Verhalten für die Funktion setdiff() in R
thing1 <- c(1,2,3)
thing2 <- c(2,3,4)
thing3 <- c(1,2,3)
... hier ist meine Ergebnisse.
setdiff(thing1,thing2)
> [1] 1
setdiff(thing2,thing3)
> [1] 4
setdiff(thing1,thing3)
> numeric(0)
Sollte nicht der Vergleich von thing1
und thing2
produziert das gleiche Ergebnis wie thing2
und thing3
zu vergleichen? Wie erreiche ich eine Art "Outer Join" Ergebnis (symmetrische Set-Differenz), wo wir alle Elemente sehen können, die fehlen, wenn wir unioned thing1
und thing2
? Bevorzugen Sie die Funktionalität in R Basis, würde aber auch data.tables
Ansatz zu schätzen wissen. Danke im Voraus.
Dies ist das erwartete Verhalten von 'setdiff()', die die asymmetrische Differenz zwischen den Sätzen gibt. Siehe [docs] (http://www.inside-r.org/r-doc/base/setdiff) – user5219763
'setdiff (x, y)' gibt diejenigen Mitglieder in 'x', die nicht in' y' und 'setdiff (y, x)' andersherum. Vielleicht suchen Sie nach 'union (setdiff (x, y), setdiff (y, x)) '. – 989
Sie können auch 'is.element (x, y)' oder 'x% in% y' betrachten. – 989