programing

벡터에 지정된 요소가 포함되어 있는지 여부 테스트

mailnote 2023. 6. 20. 21:45
반응형

벡터에 지정된 요소가 포함되어 있는지 여부 테스트

벡터에 주어진 값이 포함되어 있는지 확인하는 방법은 무엇입니까?

둘 다match()(첫 번째 등장 이후) 및%in%(Boolean 반환) 함수는 이를 위해 설계되었습니다.

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')

존재 여부 확인:

%in%

> 'a' %in% v
[1] TRUE

아무렇게나

> any('a'==v)
[1] TRUE

is.substant

> 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() 제거

any() 함수는 읽을 수 있는 코드를 만듭니다.

> 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

이러한 함수는 대소문자를 구분합니다.

벡터에 요소가 존재하는지 확인하는 또 다른 옵션은 다음과 같습니다.%in{}%의 구문inops 다음과 같은 패키지:

library(inops)
#> 
#> Attaching package: 'inops'
#> The following object is masked from 'package:base':
#> 
#>     <<-
v <- c('a','b','c','e')
v %in{}% c("b")
#> [1] FALSE  TRUE FALSE FALSE

reprex 패키지(v2.0.1)에 의해 2022-07-16에 생성되었습니다.

언급URL : https://stackoverflow.com/questions/1169248/test-if-a-vector-contains-a-given-element

반응형