将矢量的数字列表与矢量的字符列表相匹配

时间:2011-11-27 21:17:07

标签: r

我有一个字符串(向量)列表,我有一个数字向量列表,我想用它来查找第一个单词。我把它安排在下面的数据表中,以帮助您想象:

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

我想从第一行的字符串中提取第二个和第八个单词,然后从第二行的字符串中提取第一个和第四个单词,如下面的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 个答案:

答案 0 :(得分:3)

我刚刚意识到mapply就是答案:

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

答案 1 :(得分: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中索引列表 http://cran.r-project.org/doc/manuals/R-lang.html#Indexing