2011-11-27 4 views
1

문자열 목록 (벡터)을 가지고 있고 처음부터 단어를 찾기 위해 사용하려는 숫자 벡터 목록이 있습니다. 나는 아래의 데이터 테이블을 시각화 도움으로 배열이 있습니다숫자 목록을 벡터의 문자 목록과 일치시킵니다.

        words neg2 
1 i, do, not, like, when, she, is, mean 2, 8 
2    i, think, its, not, bad 1, 4 

내가 행 하나에 대한 문자열에서 두 번째와 8 번째 단어를 추출 할 다음 행의 문자열에서 첫 번째와 네 번째 단어 아래의 치열과 같이 2 :

        words neg2 MATCH 
1 i, do, not, like, when, she, is, mean 2, 8 do, mean 
2    i, think, its, not, bad 1, 4 i, not 

코드는이 목록을 재현 :

neg2<-list(c(2, 8), c(1, 4)) 
x$words <-list(c("i", "do", "not", "like", "when", "she", "is", "mean"), 
    c("i", "think", "its", "not", "bad")) 

나는 이것이 내가 그냥 보이지 않아요 쉽게 알고있다. match(), lapply() 및 기타 여러 가지 조합을 사용하여 시도했지만 부족한 부분이 있습니다.

나는 이것을 달성하는 가장 효율적인 방법을 고맙게 생각합니다.

답변

3

참조하는 방법을 인덱스 이해할 필요가 같은 답입니다 :

SEL<-function(x, y)x[y] 
mapply(SEL, x$words, neg2, SIMPLIFY = FALSE) 
+0

'mapply' get이 사용되지 않습니다. +1 –

+0

답변 인 경우 자신의 답변에 정답으로 표시 할 수 있습니다. –

0
words <- list(c("i", "do", "not", "like", "when", "she", "is", "mean"), 
    c("i", "think", "its", "not", "bad")) 
neg2<-list(c(2, 8), c(1, 4)) 
words[[1]][neg2[[1]]] 
words[[2]][neg2[[2]]] 

은 또는 단어와 인덱스의 임의의 긴 목록을 위해 :

words1 <- list() 
for(i in 1:length(words)) { 
    words1[[i]] <- words[[i]][neg2[[i]]] 
} 

가 보이는 당신은 R.의 목록 난 그냥 mapply 실현 http://cran.r-project.org/doc/manuals/R-lang.html#Indexing

+0

도움 주셔서 감사합니다. 이 예제는 작지만 인덱싱은 의미가 있지만 '손'으로 인덱싱하는 것이 적절하지 않은 많은 양의 텍스트로 작업하고 있습니다. –

관련 문제