R从n个元素的字符向量中生成大小为m的所有可能组合[重复]
Posted
技术标签:
【中文标题】R从n个元素的字符向量中生成大小为m的所有可能组合[重复]【英文标题】:R generate all possible combinations of size m from of a character vector of n elements [duplicate] 【发布时间】: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() 会这样做,但我不知道如何使用它来获得所需的输出。有什么想法吗?
【问题讨论】:
请注意:*** 通常缩写为 SO,而不是 SOF。 【参考方案1】:x <- c("T", "A", "C", "G")
do.call(expand.grid, rep(list(x), 3))
【讨论】:
有没有更不直观的符号? ;-)【参考方案2】:来自gtools
的permutations
就是为此而设计的:
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 种组合吗?以上是关于R从n个元素的字符向量中生成大小为m的所有可能组合[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Javascript - 在单个数组中生成所有元素组合(成对)