2014-11-21 95 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"