我有一个字符串(向量)列表,我有一个数字向量列表,我想用它来查找第一个单词。我把它安排在下面的数据表中,以帮助您想象:
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()和其他各种组合,但是很快就会出现。
我很欣赏实现这一目标的最有效方法。
答案 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