組合數:從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
