【问题标题】:R generate all possible combinations of size m from of a character vector of n elements [duplicate]R从n个元素的字符向量中生成大小为m的所有可能组合[重复]
【发布时间】:2014-07-27 20:25:42
【问题描述】:

所以,我有这个向量 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() 会这样做,但我不知道如何使用它来获得所需的输出。有什么想法吗?

【问题讨论】:

  • 请注意:StackOverflow 通常缩写为 SO,而不是 SOF。

标签: r combinations


【解决方案1】:
x <- c("T", "A", "C", "G")

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

【讨论】:

  • 有没有更不直观的符号? ;-)
【解决方案2】:

来自gtoolspermutations 就是为此而设计的:

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

【讨论】:

  • 真的有必要在你的答案中包含所有 64 种组合吗?
猜你喜欢
  • 1970-01-01
  • 2018-12-15
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
相关资源
最近更新 更多