Sprawdź, czy wektor zawiera dany element
Jak sprawdzić, czy wektor zawiera daną wartość?
7 answers
Obie funkcje match()
(zwraca pierwszy wygląd) i %in%
(zwraca Boolean) są do tego przeznaczone.
v <- c('a','b','c','e')
'b' %in% v
## returns TRUE
match('b',v)
## returns the first location of 'b', in this case: 2
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-27 18:15:34
is.element()
sprawia, że kod jest bardziej czytelny i jest identyczny z %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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-02 12:03:47
Funkcja any() tworzy czytelny kod
> 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-20 22:12:04
Możesz użyć operatora %in%
:
vec <- c(1, 2, 3, 4, 5)
1 %in% vec # true
10 %in% vec # false
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-23 02:25:52
Pogrupuję opcje na podstawie wyjścia. Załóżmy następujący wektor dla wszystkich przykładów.
v <- c('z', 'a','b','a','e')
do sprawdzania obecności:
%w%
> 'a' %in% v
[1] TRUE
Dowolne()
> any('a'==v)
[1] TRUE
Jest.element()
> is.element('a', v)
[1] TRUE
za znalezienie pierwszego occurance:
Mecz()
> match('a', v)
[1] 2
do znalezienia wszystkich wystąpień jako wektor indeksy:
Które()
> which('a' == v)
[1] 2 4
do znajdowania wszystkich wystąpień jako wektor logiczny:
==
> 'a' == v
[1] FALSE TRUE FALSE TRUE FALSE
Edytuj: Usunięcie grep () i grepl () z listy z przyczyn wymienionych w komentarzach
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-18 02:54:05
Również do znalezienia pozycji elementu "który" może być użyty jako
pop <- c(3,4,5,7,13)
which(pop==13)
I aby znaleźć elementy, które nie są zawarte w wektorze docelowym, można to zrobić:
pop <- c(1,2,4,6,10)
Tset <- c(2,10,7) # Target set
pop[which(!(pop%in%Tset))]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-18 02:06:25
Bardzo lubię grep () i grepl () do tego celu.
Grep () zwraca wektor liczb całkowitych, które wskazują, gdzie są dopasowania.
yo <- c("a", "a", "b", "b", "c", "c")
grep("b", yo)
[1] 3 4
Grepl () zwraca wektor logiczny z "TRUE" w miejscu dopasowania.
yo <- c("a", "a", "b", "b", "c", "c")
grepl("b", yo)
[1] FALSE FALSE TRUE TRUE FALSE FALSE
Te funkcje uwzględniają wielkość liter.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-03 01:02:53