Hoe controleer je of een vector een bepaalde waarde bevat?
Antwoord 1, autoriteit 100%
Zowel de match()
(retourneert de eerste weergave) als de %in%
(retourneert een Boolean) functies zijn hiervoor ontworpen.
v <- c('a','b','c','e')
'b' %in% v
## returns TRUE
match('b',v)
## returns the first location of 'b', in this case: 2
Antwoord 2, autoriteit 35%
is.element()
zorgt voor een beter leesbare code en is identiek aan %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
Antwoord 3, autoriteit 17%
Ik zal de opties groeperen op basis van output. Neem voor alle voorbeelden de volgende vector aan.
v <- c('z', 'a','b','a','e')
Voor het controleren van de aanwezigheid:
%in%
> 'a' %in% v
[1] TRUE
elke()
> any('a'==v)
[1] TRUE
is.element()
> is.element('a', v)
[1] TRUE
Voor het vinden van de eerste keer:
overeenkomst()
> match('a', v)
[1] 2
Voor het vinden van alle voorkomens als vector van indices:
welke()
> which('a' == v)
[1] 2 4
Voor het vinden van alle voorkomens als logische vector:
==
> 'a' == v
[1] FALSE TRUE FALSE TRUE FALSE
Bewerken:
Verwijderen van grep()en grepl()uit de lijst om de reden vermeld in opmerkingen
Antwoord 4, autoriteit 13%
De functie any()zorgt voor leesbare 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
Antwoord 5, autoriteit 7%
U kunt de operator %in%
gebruiken:
vec <- c(1, 2, 3, 4, 5)
1 %in% vec # true
10 %in% vec # false
Antwoord 6, autoriteit 4%
Ook om de positie te vinden van het element “welke” kan worden gebruikt als
pop <- c(3,4,5,7,13)
which(pop==13)
en om de elementen te vinden die niet in de doelvector zitten, kan men dit doen:
pop <- c(1,2,4,6,10)
Tset <- c(2,10,7) # Target set
pop[which(!(pop%in%Tset))]
Antwoord 7, autoriteit 2%
Ik hou echt van grep() en grepl() voor dit doel.
grep() retourneert een vector van gehele getallen, die aangeven waar overeenkomsten zijn.
yo <- c("a", "a", "b", "b", "c", "c")
grep("b", yo)
[1] 3 4
grepl() retourneert een logische vector, met “TRUE” op de locatie van overeenkomsten.
yo <- c("a", "a", "b", "b", "c", "c")
grepl("b", yo)
[1] FALSE FALSE TRUE TRUE FALSE FALSE
Deze functies zijn hoofdlettergevoelig.