2014-07-24 2 views
2

특정 값 (목록, 벡터 또는 데이터 프레임)을 검색하기 위해 벡터의 긴 목록 (100 개 이상의 이름을 포함하는 50 개 이상의 문자 벡터)에 긴 색인 벡터 (50 개 이상의 비 연속 정수)).벡터 목록에 인덱스 벡터를 적용하려면 어떻게해야합니까?

단순화 된 예는 아래와 같다 :

> my.list <- list(c("a","b","c"),c("d","e","f")) 
> my.index <- 2:3 

원하는 출력

[[1]] 
[1] "b" 
[[2]] 
[1] "f" 
##or 
[1] "b" 
[1] "f" 
##or 
[1] "b" "f" 

제가 이용하여 각각의 소자에서 동일한 값을 얻을 수 알고

> lapply(my.list, function(x) x[2]) 
##or 
> lapply(my.list,'[', 2) 

I가 당겨 수 제 2 값 및 제 3 값을 각각 다음과 같이 정의한다.

> lapply(my.list,'[', my.index) 
[[1]] 
[1] "b" "c" 

[[2]] 
[1] "e" "f" 

##or 
> for(j in my.index) for(i in seq_along(my.list)) print(my.list[[i]][[j]]) 
[1] "b" 
[1] "e" 
[1] "c" 
[1] "f" 

각 요소에서 하나의 값만 가져 오는 방법을 모르겠습니다.

저는 며칠 동안 찾고 있었지만 아직 완료되지 않은 사례를 발견하지 못했지만 상당히 솔직하게 보입니다. 내가 여기서 뭔가 분명한 것을 놓치고 있니? 당신이 Map 또는 mapply (Map 단순히 래퍼 하드 코딩 SIMPLIFY=FALSE와 주변 mapply 인) 고려 lapply 비슷하지만, 다수의 병렬 목록/벡터를 포함하는 문제가있을 때마다

는 스콧

답변

3

을 주셔서 감사합니다.

이 시도 :

Map("[",my.list,my.index) 
#[[1]] 
#[1] "b" 
# 
#[[2]] 
#[1] "f" 

.. 또는 :

mapply("[",my.list,my.index) 
#[1] "b" "f" 
+0

딱! 나는 그와 같은 것을 놓쳐 야한다는 것을 알았습니다 ... – stm027

관련 문제