文字列を指定すると、文字列内で起こりうる各部分文字列を計算します。私は以下のように機能を書かれている可能なすべての部分文字列の出現数とその出現をカウントします。
"A" = 2
"B" = 2
"AA" = 0
"AB" = 2
"BA" = 1
"BB" = 0
:たとえば、私はすべての可能な部分列とそれらの値を計算したい文字列
str = "abab"
を与え
countSubstrings <- function(string_try ="", items = NULL)
{
string_try <- toupper(string_try)
if(is.null(items))
{
items <- strsplit(string_try, "")[[1]]
}
n <- length(unique(items))
counts_substrings <- c()
substrings_all <- c()
for (i in 1:n) # Number of characters in substring
{
substrings_combo <- gtools::permutations(n, i, unique(items), repeats=TRUE)
print(paste("The number of combinations is: ",
nrow(substrings_combo), "for substrings of length", i))
for(j in 1:nrow(substrings_combo))
{
tosearch <- paste(substrings_combo[j,], collapse = "")
substrings_all <- c(substrings_all, tosearch)
total <- sum(grepl(tosearch,
sapply(1:(nchar(string_try) - 1),
function(ii) substr(string_try, ii, ii + 1))))
counts_substrings <- c(counts_substrings, find_overlaps(tosearch, string_try))
}
}
return(list(substrings_all,counts_substrings))
}
それは何をしてIほんとうに遅いです。 1つの潜在的な欠陥私のプログラムでは、 "aa"の発生がゼロであっても部分文字列 "aaa"とみなしています。これは、シーケンス解析とパターンマイニングで一般的です。私はすでに高速化された実装が既にあるのか、それとも何とか最適化できるのかどうか疑問です。 Rソリューションが必要です。