сопоставление числового списка векторов с символьным списком векторов - PullRequest
1 голос
/ 28 ноября 2011

У меня есть список строк символов (векторов), и у меня есть список числовых векторов, которые я хочу использовать, чтобы найти слова из первого.Я организовал его в виде таблицы данных ниже, чтобы помочь вам визуализировать:

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

Я хочу извлечь 2-е и 8-е слово из строки символов для первой строки, а затем 1-е и четвертое слова из строки символовдля строки 2, как показано в столбце MATCH ниже:

                                 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

Код для воспроизведения 2 списков:

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 () и различными другими комбинациями, но у меня мало времени.

Буду признателен за самый эффективный способ добиться этого.

Ответы [ 2 ]

3 голосов
/ 28 ноября 2011

Я только что понял, mapply это ответ:

SEL<-function(x, y)x[y]
mapply(SEL, x$words, neg2, SIMPLIFY = FALSE)
0 голосов
/ 28 ноября 2011
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. См. http://cran.r -project.org / DOC / Инструкции / R-lang.html # Индексация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...