我想在另一个有500多行的data.frame [Database]中查找单个字符串[Sequences]。
例如:
Sequences<-c("AzzY","BbDe")
Database<-c("TTUAzzY","aaa","DBbDe","CAzzY")
理想情况下,代码将遍历[Database]的每一行,以查找是否与[Sequences]之一匹配。从上面的例子中,“AzzY”有2个匹配,“BbDe”有1个匹配。我希望将此计数添加到[Sequences]的新列中。
非常感谢。
答案 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