如何基于指定序列生成两个向量的组合的所有置换?

问题描述 投票:0回答:1

我正在尝试基于特定的重复次数创建S值与G值组合的所有可能排列的列表。例如,4次重复如下所示:[SGSGSGSG

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

使用向量中的值,一些示例组合为:

"TCTGGTTCTGGTTCTGGTTCTGGT"
"TCTGGTTCCGGCTCGGGATCAGGG"

我发现我可以使用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循环就能按照我所描述的方式进行所有排列的快速方法?

但是,我不知道有什么方法可以将此功能限制为仅提供由SGSGSGSG组成的排列...

r permutation tidyverse
1个回答
0
投票

使用permuteGeneral可能更有效

library(RcppAlgos)
permuteGeneral(S, m = length(S), freqs = rep(4, length(S)))
© www.soinside.com 2019 - 2024. All rights reserved.