2014-11-21 73 views
0

的一部分假设我有两个列表:子项通过匹配字符串

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

我想子集list1list2匹配的项目。在这种情况下,list1将只包含这两个项目"e.ff.txt", "gg.hhh.txt"。谢谢!

回答

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"