组合数:从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。
代码:
str_comb <- function(vector){ n <- length(vector) num=0 #保留所有组合的个数 col=1 #用作循环叠加 for (i in 1:n) { num=num+choose(n,i) } #计算组合个数 comb_matrix <- matrix(,nrow = num,ncol = 1) #用矩阵保存组合结果 for (j in 1:n) { comb_res <- combn(vector,j) #产生长度为j的组合 m <- ncol(comb_res) #计算组合所在列数,即组合个数 for (l in 1:m) { comb_matrix[col,1] <- paste(comb_res[,l],collapse = ‘,‘)#字符组合函数 col=col+1 if(col==num)break#当组合数量达到最终个数后,跳出循环 } } return(comb_matrix) } a <- c(‘A‘,‘B‘,‘C‘,‘D‘) str_comb(a)
运行结果:
> str_comb(a) [,1] [1,] "A" [2,] "B" [3,] "C" [4,] "D" [5,] "A,B" [6,] "A,C" [7,] "A,D" [8,] "B,C" [9,] "B,D" [10,] "C,D" [11,] "A,B,C" [12,] "A,B,D" [13,] "A,C,D" [14,] "B,C,D" [15,] "A,B,C,D"
参考来源:https://www.cnblogs.com/rhongp/p/6383815.html
2018-04-30 22:51:32
原文:https://www.cnblogs.com/wxyz94/p/8975067.html