Как сгенерировать все перестановки комбинации двух векторов на основе заданной последовательности? - PullRequest
1 голос
/ 25 сентября 2019

Я пытаюсь создать список всех возможных перестановок комбинации значений из S со значениями из G на основе определенного количества повторений.Например, 4 повторения будут выглядеть следующим образом: SGSGSGSG

S <- c("TCT", "TCC", "TCG", "TCA", "AGT", "AGC")
G <- c("GGT", "GGC", "GGA", "GGG")

Используя значения из векторов, примерная комбинация будет выглядеть так:

"TCTGGTTCTGGTTCTGGTTCTGGT"
"TCTGGTTCCGGCTCGGGATCAGGG"

Я обнаружил, что могу сделать перестановки для каждогоvector независимо с пакетом gtools, но это не совсем то, что я ищу:

pS <- gtools::permutations(v = S, n = length(S), r = 4, repeats.allowed = TRUE)
pG <- gtools::permutations(v = G, n = length(G), r = 4, repeats.allowed = TRUE)

Есть ли быстрый способ сделать все перестановки так, как я описал, без использования цикла for?

Я смотрел на 'expand.grid ()', однако я не знаю способа ограничить эту функцию, давая мне только те перестановки, которые состоят из SGSGSGSG ...

1 Ответ

1 голос
/ 25 сентября 2019

Может быть более эффективно использовать permuteGeneral

library(RcppAlgos)
permuteGeneral(S, m = length(S), freqs = rep(4, length(S)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...