벡터에서 요소의 인덱스를 찾는 R 함수가 있습니까?
R에서, 나는 요소를 가지고 있습니다.x
벡터v
다음에서 요소의 첫 번째 인덱스를 찾습니다.v
그것과 맞먹는x
이를 위한 한 가지 방법은 다음과 같습니다.which(x == v)[[1]]
하지만 그건 너무 비효율적으로 보입니다.더 직접적인 방법이 있습니까?
보너스 포인트의 경우, 다음과 같은 경우에 작동하는 함수가 있습니까?x
벡터입니까?즉, 각 요소의 위치를 나타내는 지수 벡터를 반환해야 합니다.x
에v
.
함수match
벡터에 대한 작업:
x <- sample(1:10)
x
# [1] 4 5 9 3 8 1 6 10 7 2
match(c(4,8),x)
# [1] 1 5
match
요청한 대로 일치하는 첫 번째 만남만 반환합니다.첫 번째 인수에 있는 값의 두 번째 인수에 있는 위치를 반환합니다.
다중 일치의 경우%in%
방법은 다음과 같습니다.
x <- sample(1:4,10,replace=TRUE)
x
# [1] 3 4 3 3 2 3 1 1 2 2
which(x %in% c(2,4))
# [1] 2 5 9 10
%in%
첫 번째 인수만큼 긴 논리 벡터를 반환합니다.TRUE
만약 그 값이 두 번째 인수에서 발견될 수 있다면 그리고 a.FALSE
그렇지않으면.
함수Position
funprog {base}에서도 작업을 수행합니다.임의 함수를 전달하고 처음 또는 마지막 일치 항목을 반환할 수 있습니다.
Position(f, x, right = FALSE, nomatch = NA_integer)
위에서 언급한 방법의 효율성에 대한 작은 참고 사항:
library(microbenchmark)
microbenchmark(
which("Feb" == month.abb)[[1]],
which(month.abb %in% "Feb"))
Unit: nanoseconds
min lq mean median uq max neval
891 979.0 1098.00 1031 1135.5 3693 100
1052 1175.5 1339.74 1235 1390.0 7399 100
그래서 가장 좋은 것은.
which("Feb" == month.abb)[[1]]
예, 다음과 같이 벡터에서 요소의 인덱스를 찾을 수 있습니다.
> a <- c(3, 2, -7, -3, 5, 2)
> b <- (a==-7) # this will output a TRUE/FALSE vector
> c <- which(a==-7) # this will give you numerical value
> a
[1] 3 2 -7 -3 5 2
> b
[1] FALSE FALSE TRUE FALSE FALSE FALSE
> c
[1] 3
이것은 벡터에서 요소의 인덱스를 찾는 가장 효율적인 방법 중 하나입니다.
언급URL : https://stackoverflow.com/questions/5577727/is-there-an-r-function-for-finding-the-index-of-an-element-in-a-vector
'programing' 카테고리의 다른 글
SQL - 여러 선택 항목의 여러 열에 삽입 (0) | 2023.06.05 |
---|---|
가상 시스템 클래식과 zure의 가상 시스템의 차이점은 무엇입니까? (0) | 2023.06.05 |
안드로이드:layout_weight는 무엇을 의미합니까? (0) | 2023.06.05 |
R 마크다운, Knitr, Pandoc 및 북다운의 관계 (0) | 2023.06.05 |
Firebase 기능을 배포하는 동안 ESLint 오류가 발생했습니다. (0) | 2023.06.05 |