R从n个元素的字符向量生成大小为m的所有可能组合

时间:2014-06-06 14:16:41

标签: r combinations

所以,我有这个载体c(“T”,“A”,“C”,“G”)用于基因组数据。我希望生成大小为3的所有可能组合,重复次数如下:

T T T
T T A
T T C
T T G
T A T
..

这会给我4 ^ 3 = 64种组合。大小为4的组合将给出4 ^ 4,对于大小5,组合应为4 ^ 5 = 1024行。

我搜索了SOF,并认为expand.grid()会这样做,但我无法找到如何使用它来获得所需的输出。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

x <- c("T", "A", "C", "G")

do.call(expand.grid, rep(list(x), 3))

答案 1 :(得分:2)

来自permutations

gtools旨在实现此目的:

library(gtools)

data <-  c("T", "A", "C", "G")

permutations(4, 3, data, repeats.allowed = TRUE)
##       [,1] [,2] [,3]
##  [1,] "A"  "A"  "A" 
##  [2,] "A"  "A"  "C" 
##  [3,] "A"  "A"  "G" 
##  [4,] "A"  "A"  "T" 
##  [5,] "A"  "C"  "A" 
##  [6,] "A"  "C"  "C" 
##  [7,] "A"  "C"  "G" 
##  [8,] "A"  "C"  "T" 
##  [9,] "A"  "G"  "A" 
## [10,] "A"  "G"  "C" 
## [11,] "A"  "G"  "G" 
## [12,] "A"  "G"  "T" 
## [13,] "A"  "T"  "A" 
## [14,] "A"  "T"  "C" 
## [15,] "A"  "T"  "G" 
## [16,] "A"  "T"  "T" 
## [17,] "C"  "A"  "A" 
## [18,] "C"  "A"  "C" 
## [19,] "C"  "A"  "G" 
## [20,] "C"  "A"  "T" 
…