match(a, b)
는 위치 j
되도록 a[i] == b[j]
을주는 i
번째 원소, length(a)
정수 벡터를 리턴한다. NA
은 기본적으로 no_match으로 생성됩니다 (사용자 정의 할 수도 있음).
당신이 intersect(a, b)
와 같은 결과를 얻고 싶은 경우에
는 다음 중 하나를 사용하십시오
b[na.omit(match(a, b))]
a[na.omit(match(b, a))]
예에게 그냥 알고 싶어
a <- 1:5
b <- 2:6
b[na.omit(match(a, b))]
# [1] 2 3 4 5
a[na.omit(match(b, a))]
# [1] 2 3 4 5
가 둘 사이의 다른 차이점. 나는 그 결과를 스스로 이해할 수 있었다.
그런 다음 우리는
intersect
이
match
의 관점에서 기록 된 것으로 나타났다 소스 코드
intersect
#function (x, y)
#{
# y <- as.vector(y)
# unique(y[match(as.vector(x), y, 0L)])
#}
를 읽어!
하하, 밖에는 unique
을 잊어 버린 것처럼 보입니다. 엠, nomatch = 0L
설정하면 na.omit
도 제거 할 수 있습니다. 글쎄, R 코어가 내 추측보다 더 효율적입니다.
후속 우리는 또한 그러나
a[a %in% b] ## need a `unique`, too
b[b %in% a] ## need a `unique`, too
을 사용할 수
는 ?match
의 읽기 있습니다. "세부 사항"에서 우리는 "%in%"
정의하는 방법을 볼 수 있습니다
"%in%" <- function(x, table) match(x, table, nomatch = 0) > 0
그래서, 그래, 모든 것이 match
를 사용하여 작성됩니다.
http://www.rexamples.com/12/Match() 일치하는 ID가 더 많습니다. 명목상과 비합리적인 것의 사용을 고려하십시오. http://www.endmemo.com/program/R/match.php –