2015-09-15 44 views
0

从给定的带有文本列的数据框中,我需要包含以前存储在向量(或第二个data.frame列)中的字符子字符串的子集行。R - 带子字符串搜索的数据框架子集

Example data: 

require(stringi) # Used for generate random string 
set.seed(1) 
df <- as.data.frame(cbind(seq(from = 1, to = 10, by = 1), stri_rand_strings(10, 5))) 

df 

    V1 V2 
1 1 GNZuC 
2 2 twed3 
3 3 CAgNl 
4 4 UizNm 
5 5 vDe7G 
6 6 N0NrL 
7 7 TbUBp 
8 8 fn6iP 
9 9 oemYW 
10 10 m1Tjg 

如果我保存搜索字符串的向量显示

tofind <- c("AgN", "bUB") 

至于结果,我需要获取以下data.frame

V1 V2 
1 3 CAgNl 
2 7 TbUBp 

感谢所有帮助

回答

0

如果你改变你的tofind载体(大写字母N),这个可以工作:

tofind <- c("AgN", "bUB") 

df[grep(paste(tofind, collapse = "|"), df$V2),] 

    V1 V2 
3 3 CAgNl 
7 7 TbUBp 

而且使用subset功能:

subset(df, grepl(paste(tofind, collapse = "|"), V2)) 

在这里,您使用grepl代替grep因为subset功能要求不是数字

+0

逻辑向量它做工精细也是真实的大数据集。我的僵局就解决了。这个问题的一个扩展:是否可以使用子集声明获得等效的解决方案? – Tiziano

+0

是的,你去!请参阅更新 –

+0

虽然详细查找更容易使用子集语法。 我已经解决了我的错误,为更多的读者。感谢所有。 – Tiziano