Aliases: combn
### ** Examples combn(letters[1:4], 2)
[,1] [,2] [,3] [,4] [,5] [,6] [1,] "a" "a" "a" "b" "b" "c" [2,] "b" "c" "d" "c" "d" "d"
(m <- combn(10, 5, min)) # minimum value in each combination
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 [149] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 [186] 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 [223] 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 6
mm <- combn(15, 6, function(x) matrix(x, 2, 3)) stopifnot(round(choose(10, 5)) == length(m), is.array(m), # 1-dimensional c(2,3, round(choose(15, 6))) == dim(mm)) ## Different way of encoding points: combn(c(1,1,1,1,2,2,2,3,3,4), 3, tabulate, nbins = 4)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [1,] 3 3 2 2 2 2 2 2 3 2 2 2 2 2 [2,] 0 0 1 1 1 0 0 0 0 1 1 1 0 0 [3,] 0 0 0 0 0 1 1 0 0 0 0 0 1 1 [4,] 0 0 0 0 0 0 0 1 0 0 0 0 0 0 [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26] [1,] 2 2 2 2 2 2 2 1 1 1 1 1 [2,] 0 1 1 1 0 0 0 2 2 1 1 1 [3,] 0 0 0 0 1 1 0 0 0 1 1 0 [4,] 1 0 0 0 0 0 1 0 0 0 0 1 [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38] [1,] 1 1 1 1 1 1 1 1 1 1 3 2 [2,] 2 1 1 1 1 1 1 0 0 0 0 1 [3,] 0 1 1 0 1 1 0 2 1 1 0 0 [4,] 0 0 0 1 0 0 1 0 1 1 0 0 [,39] [,40] [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50] [1,] 2 2 2 2 2 2 2 2 2 2 2 1 [2,] 1 1 0 0 0 1 1 1 0 0 0 2 [3,] 0 0 1 1 0 0 0 0 1 1 0 0 [4,] 0 0 0 0 1 0 0 0 0 0 1 0 [,51] [,52] [,53] [,54] [,55] [,56] [,57] [,58] [,59] [,60] [,61] [,62] [1,] 1 1 1 1 1 1 1 1 1 1 1 1 [2,] 2 1 1 1 2 1 1 1 1 1 1 0 [3,] 0 1 1 0 0 1 1 0 1 1 0 2 [4,] 0 0 0 1 0 0 0 1 0 0 1 0 [,63] [,64] [,65] [,66] [,67] [,68] [,69] [,70] [,71] [,72] [,73] [,74] [1,] 1 1 2 2 2 2 2 2 1 1 1 1 [2,] 0 0 1 1 1 0 0 0 2 2 1 1 [3,] 1 1 0 0 0 1 1 0 0 0 1 1 [4,] 1 1 0 0 0 0 0 1 0 0 0 0 [,75] [,76] [,77] [,78] [,79] [,80] [,81] [,82] [,83] [,84] [,85] [,86] [1,] 1 1 1 1 1 1 1 1 1 1 1 1 [2,] 1 2 1 1 1 1 1 1 0 0 0 2 [3,] 0 0 1 1 0 1 1 0 2 1 1 0 [4,] 1 0 0 0 1 0 0 1 0 1 1 0 [,87] [,88] [,89] [,90] [,91] [,92] [,93] [,94] [,95] [,96] [,97] [,98] [1,] 1 1 1 1 1 1 1 1 1 1 1 1 [2,] 2 1 1 1 2 1 1 1 1 1 1 0 [3,] 0 1 1 0 0 1 1 0 1 1 0 2 [4,] 0 0 0 1 0 0 0 1 0 0 1 0 [,99] [,100] [,101] [,102] [,103] [,104] [,105] [,106] [,107] [,108] [1,] 1 1 0 0 0 0 0 0 0 0 [2,] 0 0 3 2 2 2 2 2 2 1 [3,] 1 1 0 1 1 0 1 1 0 2 [4,] 1 1 0 0 0 1 0 0 1 0 [,109] [,110] [,111] [,112] [,113] [,114] [,115] [,116] [,117] [,118] [1,] 0 0 0 0 0 0 0 0 0 0 [2,] 1 1 2 2 2 1 1 1 1 1 [3,] 1 1 1 1 0 2 1 1 2 1 [4,] 1 1 0 0 1 0 1 1 0 1 [,119] [,120] [1,] 0 0 [2,] 1 0 [3,] 1 2 [4,] 1 1
## Compute support points and (scaled) probabilities for a ## Multivariate-Hypergeometric(n = 3, N = c(4,3,2,1)) p.f.: # table.mat(t(combn(c(1,1,1,1,2,2,2,3,3,4), 3, tabulate, nbins = 4))) ## Assuring the identity for(n in 1:7) for(m in 0:n) stopifnot(is.array(cc <- combn(n, m)), dim(cc) == c(m, choose(n, m)), identical(cc, combn(n, m, identity)) || m == 1)