Comment générer toutes les chaînes possibles à partir de caractères variables à des emplacements donnés dans R?
Powege
Étant donné un vecteur ordonné de chaînes où chaque chaîne montre les caractères possibles à cette position, comment puis-je obtenir toutes les combinaisons possibles de chaînes?
Par exemple, étant donné le vecteur:
vec <- c("A", "A", "T", "C", "AG", "ACG", "T", "A", "A")
Les combinaisons de chaînes possibles, les positions données 5 peuvent être "A" ou "G", et 6 peuvent être "A", "C" ou "G" sont:
strings <- c("AATCAATAA"
"AATCACTAA"
"AATCAGTAA"
"AATCGATAA"
"AATCGCTAA"
"AATCGGTAA")
Joe Roe
Divisez votre vecteur en caractères individuels, puis utilisez 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
Cela nous donne un bloc de données, mais nous pouvons coller les lignes ensemble pour obtenir un seul vecteur:
apply(strings, 1, paste0, collapse = "")
#> [1] "AATCAATAA" "AATCGATAA" "AATCACTAA" "AATCGCTAA" "AATCAGTAA" "AATCGGTAA"