R中有多个字符串/模式匹配

时间:2014-11-13 02:03:22

标签: r

我想在另一个有500多行的data.frame [Database]中查找单个字符串[Sequences]。

例如:

Sequences<-c("AzzY","BbDe")
Database<-c("TTUAzzY","aaa","DBbDe","CAzzY")

理想情况下,代码将遍历[Database]的每一行,以查找是否与[Sequences]之一匹配。从上面的例子中,“AzzY”有2个匹配,“BbDe”有1个匹配。我希望将此计数添加到[Sequences]的新列中。

非常感谢。

3 个答案:

答案 0 :(得分:1)

require("dplyr")
Sequences=c("AzzY","BbDe")
Database=c("TTUAzzY","aaa","DBbDe","CAzzY")

df=as.data.frame(sapply(Sequences, function(x) grepl(x,Database)))
stats=df %>% summarise_each(funs(sum))
cbind(Sequences,as.numeric(stats))

答案 1 :(得分:1)

Sequences=c("AzzY","BbDe") 
Database=c("TTUAzzY","aaa","DBbDe","CAzzY")

sapply(Sequences, function(x) length(grep(x, Database)))
# AzzY BbDe 
#    2    1 

答案 2 :(得分:0)

另一个想法是&#34;压扁&#34; Database向量并在其中搜索。

在这里,有效的&#34; stringi&#34;包:

library(stringi)
stri_count_fixed(stri_flatten(Database), Sequences)
# [1] 2 1

如果需要setNames

,您可以更新输出并添加名称
setNames(stri_count_fixed(stri_flatten(Database), Sequences), Sequences)
# AzzY BbDe 
#    2    1