列表中的子集项通过匹配部分字符串

时间:2014-11-21 16:16:29

标签: r list

假设我有两个列表:

list1 <- list("aaa.bbb.txt", "ccc.dddd.txt", "e.ff.txt", "gg.hhh.txt")
list2 <- list("ff","hhh" )

我想将list1分组到与list2匹配的项目。在这种情况下,list1只会包含这两项"e.ff.txt", "gg.hhh.txt"。谢谢!

1 个答案:

答案 0 :(得分:3)

尝试

pat <- paste(list2,collapse="|")
list1[sapply(list1, function(x) length(grep(pat,x))) >0]
#[[1]]
#[1] "e.ff.txt"

#[[2]]
#[1] "gg.hhh.txt"

或者对于此示例,以下代码也有效。

list1[grepl(pat, list1)]
#[[1]]
#[1] "e.ff.txt"

#[[2]]
#[1] "gg.hhh.txt"