使用R完成字串的子字串頻率統計
阿新 • • 發佈:2019-01-24
整理自統計之都論壇
方法一 使用strsplit函式
a <- "aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggagg"
b <- strsplit(as.character(a),"ag")
length(b[[1]]) - 1 ##子字串"ag"的出現個數
方法二 使用正則式函式
a <- "aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggagg" b <- strsplit(as.character(a),"ag") regexpr("ag",a) gregexpr("ag",a) gregexpr("a.g",a) attr(gregexpr("a.g",a)[[1]], "match.length") #提取子模式長度
方法三 使用str_count函式
library(stringr)
str_count("1212345", c("12", "23", "00"))
一個使用例項
計算a*g中間有0-5個任意字母的頻率
library(stringr) str <- "aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggagg" n <- 0:5 patterns <- sapply(n,function(i) { paste0("a\\w{",i,"}g") }) counts <- str_count(str,patterns) names(counts) <- n counts