所以我有一系列核苷酸,我需要计算gaga一词出现在序列中的次数。这就是我到目前为止所做的:
dna=c("a","g","c","t")
N=16
x=sample(dna,N,4)
x2=paste(x,collapse="")
x2
以下是输出示例:
gtaggcctaattataa
最后,我将编写一个循环使其运行100次,并绘制“gaga”字数的直方图。所以,我的主要问题是:如何编写函数或代码来搜索字符串x2并计算单词“gaga”的出现次数。
任何帮助将不胜感激!谢谢!
答案 0 :(得分:3)
?regex
sapply( gregexpr( "gaga", c("gtaggcctaattataa",
"gtaggcctaatgagaataa",
"gagagaga") ) ,
function(x) if( x[1]==-1 ){ 0 }else{ length(x) } )
[1] 0 1 2
答案 1 :(得分:1)
这实际上是qdap软件包中DWin解决方案的包装器:
x<- c("gtaggcctaattataa", "gtaggcctaatgagaataa", "gagagaga")
library(qdap)
qdap:::termco.h(x, "gaga", seq_along(x))
## 3 word.count term(gaga)
## 1 1 1 0
## 2 2 1 1
## 3 3 1 2
如果您只想要计数:
qdap:::termco.h(x, "gaga", 1:3)[, 3]
答案 2 :(得分:0)
这是一种重叠的方法:
vec <- c("gagatttt",
"ttttgaga",
"gaga",
"tttgagattt",
"gagagaga",
"gagaga")
sapply(strsplit(vec, "ga(?=ga)", perl = TRUE), length) - 1L
# [1] 1 1 1 1 3 2
答案 3 :(得分:0)
使用stri_count_fixed
包
stringi
dna=c("a","g","c","t")
N=160
x=sample(dna,N,4)
x2 <- stri_paste(x,collapse="")
stri_count_fixed(x2,"gaga")
## 2