2014-07-15 3 views
1

이것은 사소한 질문 일 수 있습니다. 내가 vec에서 각각의 고유 한 요소가 vec에 표시되는 위치의 인덱스를 돌려 것이다 효율적인 기능을 찾고 있어요벡터 요소의 매핑 색인

vec <- c("a","b","d","e","e","f","g","a","d") 

: 반복되는 일부 문자의 벡터 감안할 때

.

list(a = c(1,8), b = 2, d = c(3,9), e = c(4,5), f = 6, g = 7) 

답변

1

여기에 몇 가지 옵션입니다 :

lapply(setNames(unique(vec),unique(vec)), function(x) which(x == vec)) 
# or to avoid setNames and still ensure you get a list: 
sapply(unique(vec), function(x) which(x == vec), simplify=FALSE) 
# or even better but maybe not as extensible: 
split(seq_along(vec),vec) 

모든 제공 :

$a 
[1] 1 8 

$b 
[1] 2 

$d 
[1] 3 9 

$e 
[1] 4 5 

$f 
[1] 6 

$g 
[1] 7 

나는 반환 값이 목록 같은 될 것이라고 상상

관련 문제