[r] 벡터에 주어진 요소가 포함되어 있는지 테스트
벡터에 주어진 값이 포함되어 있는지 확인하는 방법은 무엇입니까?
답변
이를 위해 match()
(첫 번째 모양을 반환) 및 %in%
(부울을 반환) 기능이 모두 설계되었습니다.
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()
더 읽기 쉬운 코드를 만들고 %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
답변
출력을 기준으로 옵션을 그룹화합니다. 모든 예제에 대해 다음 벡터를 가정하십시오.
v <- c('z', 'a','b','a','e')
존재 여부 확인 :
%에%
> 'a' %in% v
[1] TRUE
어떤()
> any('a'==v)
[1] TRUE
is.element ()
> is.element('a', v)
[1] TRUE
첫 번째 발생을 찾기 위해 :
시합()
> match('a', v)
[1] 2
모든 벡터를 지수 벡터로 찾기 :
어느()
> which('a' == v)
[1] 2 4
모든 발생을 논리 벡터로 찾기 위해 :
==
> 'a' == v
[1] FALSE TRUE FALSE TRUE FALSE
편집 : 주석에 언급 된 이유로 목록에서 grep () 및 grepl () 제거
답변
어떤 () 가 읽을 수있는 코드에 대한 함수 만든다
> 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
답변
%in%
연산자 를 사용할 수 있습니다 :
vec <- c(1, 2, 3, 4, 5)
1 %in% vec # true
10 %in% vec # false
답변
또한 “어떤”요소의 위치를 찾기 위해
pop <- c(3,4,5,7,13)
which(pop==13)
대상 벡터에 포함되지 않은 요소를 찾으려면 다음을 수행하십시오.
pop <- c(1,2,4,6,10)
Tset <- c(2,10,7) # Target set
pop[which(!(pop%in%Tset))]
답변
나는이 목적을 위해 grep ()과 grepl ()을 정말로 좋아합니다.
grep ()은 일치하는 위치를 나타내는 정수 벡터를 반환합니다.
yo <- c("a", "a", "b", "b", "c", "c")
grep("b", yo)
[1] 3 4
grepl ()은 일치하는 위치에 “TRUE”인 논리 형 벡터를 반환합니다.
yo <- c("a", "a", "b", "b", "c", "c")
grepl("b", yo)
[1] FALSE FALSE TRUE TRUE FALSE FALSE
이 기능은 대소 문자를 구분합니다.