Wie überprüfe ich, ob ein Vektor einen bestimmten Wert enthält?
Hierfür sind sowohl die Funktionen match()
(gibt das erste Erscheinungsbild zurück) als auch %in%
(gibt einen Booleschen Wert zurück) vorgesehen.
v <- c('a','b','c','e')
'b' %in% v
## returns TRUE
match('b',v)
## returns the first location of 'b', in this case: 2
is.element()
sorgt für besser lesbaren Code und ist identisch mit %in%
v <- c('a','b','c','e')
is.element('b', v)
'b' %in% v
## both return TRUE
is.element('f', v)
'f' %in% v
## both return FALSE
subv <- c('a', 'f')
subv %in% v
## returns a vector TRUE FALSE
is.element(subv, v)
## returns a vector TRUE FALSE
Die Funktion any () sorgt für lesbaren Code
> w <- c(1,2,3)
> any(w==1)
[1] TRUE
> v <- c('a','b','c')
> any(v=='b')
[1] TRUE
> any(v=='f')
[1] FALSE
Ich werde die Optionen basierend auf der Ausgabe gruppieren. Für alle Beispiele sei der folgende Vektor angenommen.
v <- c('z', 'a','b','a','e')
Zur Überprüfung der Anwesenheit:
% in%
> 'a' %in% v
[1] TRUE
any ()
> any('a'==v)
[1] TRUE
is.element ()
> is.element('a', v)
[1] TRUE
Zum Auffinden des ersten Vorkommens:
match ()
> match('a', v)
[1] 2
Zum Auffinden aller Vorkommen als Indexvektor:
which ()
> which('a' == v)
[1] 2 4
Zum Auffinden aller Vorkommen als logischer Vektor :
==
> 'a' == v
[1] FALSE TRUE FALSE TRUE FALSE
Bearbeiten: Entfernen von grep () und grepl () aus der Liste aus den in den Kommentaren genannten Gründen
Sie können den Operator %in%
verwenden:
vec <- c(1, 2, 3, 4, 5)
1 %in% vec # true
10 %in% vec # false
Auch um die Position des Elements zu finden "welches" kann als
pop <- c(3,4,5,7,13)
which(pop==13)
und um die Elemente zu finden, die nicht im Zielvektor enthalten sind, kann man dies tun:
pop <- c(1,2,4,6,10)
Tset <- c(2,10,7) # Target set
pop[which(!(pop%in%Tset))]
Ich mag grep () und grepl () wirklich für diesen Zweck.
grep () gibt einen Ganzzahlvektor zurück, der angibt, wo Übereinstimmungen vorliegen.
yo <- c("a", "a", "b", "b", "c", "c")
grep("b", yo)
[1] 3 4
grepl () gibt einen logischen Vektor mit "TRUE" an der Stelle der Übereinstimmungen zurück.
yo <- c("a", "a", "b", "b", "c", "c")
grepl("b", yo)
[1] FALSE FALSE TRUE TRUE FALSE FALSE
Diese Funktionen unterscheiden zwischen Groß- und Kleinschreibung.