Eine kategoriale Variable V1 in einem Datenrahmen D1 kann Werte haben, die durch die Buchstaben von A bis Z dargestellt werden. Ich möchte eine Teilmenge D2 erstellen, die einige Werte ausschließt, z. B. B, N und T. Grundsätzlich möchte ich einen Befehl, der ist das Gegenteil von %in%
D2 = subset(D1, V1 %in% c('B','N',T'))
!(x %in% y)
). Das Leben kann manchmal einfach sein ...Antworten:
Sie können den
!
Operator verwenden, um grundsätzlich jede TRUE FALSE und jede FALSE TRUE zu machen. so:BEARBEITEN: Sie können einen Operator auch selbst erstellen:
quelle
?"%in%"
), auf der der neue Operator aufgerufen wird%w/o%
.?Negate
zB"%ni%" <- Negate("%in%")
subset(df, variable %ni% c("A", "B"))
aber nicht, wenn es direkt verwendet wurde, z. B.subset(df, variable Negate("%in%") c("A", "B"))
%
. Um einen Operator zu erstellen, müssen Sie einem Namen, der mit beginnt und endet, eine Funktion mit zwei Operanden zuweisen%
.Wie wäre es mit:
quelle
Wenn Sie sich den Code von ansehen
%in%
dann sollten Sie in der Lage sein, Ihre Version des Gegenteils zu schreiben. ich benutze
Ein anderer Weg ist:
quelle
Hier ist eine Version,
filter
indplyr
der dieselbe Technik wie die akzeptierte Antwort angewendet wird, indem die Logik mit! Negiert wird:quelle
Die Verwendung von
negate
frompurrr
macht den Trick auch schnell und ordentlich:Dann ist die Verwendung zum Beispiel
quelle
Negate
, der das gleiche tut. Der einzige Unterschied besteht darin, dass purrr das Objekt anruft,as_mapper
das Sie übergeben, während SieNegate
telefonierenmatch.fun
. rdocumentation.org/packages/purrr/versions/0.2.5/topics/… stat.ethz.ch/R-manual/R-devel/library/base/html/match.fun.htmlpurrr::compose()
ist eine weitere schnelle Möglichkeit, dies für die spätere Verwendung zu definieren, wie in:quelle
Eine andere Lösung könnte verwenden
setdiff
D2
ist Ihre gewünschte Teilmenge.quelle
Hmisc hat eine
%nin%
Funktion, die dies tun sollte.https://www.rdocumentation.org/packages/Hmisc/versions/4.4-0/topics/%25nin%25
quelle
Ich denke, die klarste Verwendung ist gerecht
quelle
quelle
Weitere Informationen finden Sie unter: https://cran.r-project.org/web/packages/TSDT/TSDT.pdf
quelle
Die Hilfe für% in%
help("%in%")
enthält im Abschnitt Beispiele diese Definition von nicht in,"%w/o%" <- function(x, y) x[!x %in% y] #-- x without y
Lass es uns versuchen:
Alternative
quelle