Как сгенерировать все возможные строки с учетом переменных символов в заданных местах в R?

#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"