#r #string #combinations
#r #строка #комбинации
Вопрос:
Учитывая упорядоченный вектор строк, где каждая строка показывает возможные символы в этой позиции, как я могу получить все возможные комбинации строк?
Например, учитывая вектор:
vec <- c("A", "A", "T", "C", "AG", "ACG", "T", "A", "A")
Возможные комбинации строк, заданные позициями 5, могут быть либо «A», либо «G», а 6 могут быть «A», «C» или «G»::
strings <- c("AATCAATAA"
"AATCACTAA"
"AATCAGTAA"
"AATCGATAA"
"AATCGCTAA"
"AATCGGTAA")
Ответ №1:
Разделите свой вектор на отдельные символы, затем используйте expand.grid()
:
vec <- c("A", "A", "T", "C", "AG", "ACG", "T", "A", "A")
strings <- expand.grid(strsplit(vec, ""), stringsAsFactors = FALSE)
strings
#> Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9
#> 1 A A T C A A T A A
#> 2 A A T C G A T A A
#> 3 A A T C A C T A A
#> 4 A A T C G C T A A
#> 5 A A T C A G T A A
#> 6 A A T C G G T A A
Это дает нам фрейм данных, но мы можем вставить строки вместе, чтобы получить один вектор:
apply(strings, 1, paste0, collapse = "")
#> [1] "AATCAATAA" "AATCGATAA" "AATCACTAA" "AATCGCTAA" "AATCAGTAA" "AATCGGTAA"