In Matlab gibt es eine Möglichkeit, die Werte in einem Vektor zu finden, aber nicht in einem anderen.
zum Beispiel:
x <- c(1,2,3,4)
y <- c(2,3,4)
gibt es eine Funktion, die mir sagt, dass der Wert in x
die nicht in y
ist 1?
In Matlab gibt es eine Möglichkeit, die Werte in einem Vektor zu finden, aber nicht in einem anderen.
zum Beispiel:
x <- c(1,2,3,4)
y <- c(2,3,4)
gibt es eine Funktion, die mir sagt, dass der Wert in x
die nicht in y
ist 1?
Ja. Für Vektoren können Sie einfach die %in%
Betreiber oder is.element()
Funktion.
> x[!(x %in% y)]
1
Für eine Matrix gibt es viele unterschiedliche Ansätze. merge()
ist wahrscheinlich die einfachste. Ich schlage vor diese Frage für dieses Szenario zu prüfen .
Die Hilfedatei in R für setdiff, union, intersect, setequal, und is.element bietet Informationen zu den Standardmengenfunktionen in R.
setdiff(x, y)
gibt die Elemente von x
die sich nicht in y
.
Wie bereits erwähnt, handelt es sich um einen asymmetrischen Unterschied. Also zum Beispiel:
> x <- c(1,2,3,4)
> y <- c(2,3,4,5)
>
> setdiff(x, y)
[1] 1
> setdiff(y, x)
[1] 5
> union(setdiff(x, y), setdiff(y, x))
[1] 1 5
setdiff()
ist eine schwierige Funktion, da die Ausgabe von der Reihenfolge der Eingabe abhängt. Sie können stattdessen eine einfache Funktion schreiben, die genau das Gegenteil von intersect
. Das ist viel besser.
>difference <- function(x, y) {
c(setdiff(x, y), setdiff(y, x))
}
#Now lets test it.
>x <- c(1,2,3,4)
>y <- c(2,3,4,5)
>difference(x,y)
[1] 1 5
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.