R 中的组合学

Combinatorics in R

我有 4 个项目,其中 3 个可以达到峰值 random.But 我如何在 R 中计算总组合?

我认为可能是:

sample(4,3)

for one sample.But 每次都运行 sample function 如果结果相同或包含在前面的结果中则排除并再次运行 直到所有出现可能的组合。

但是如何在 R 中做到这一点?

您可以使用combn得到所有可能的组合:

combn(4, 3)

     [,1] [,2] [,3] [,4]
[1,]    1    1    1    2
[2,]    2    2    3    3
[3,]    3    4    4    4

对于排列,您可以使用,例如,gtools::permutations:

gtools::permutations(4, 3)

     [,1] [,2] [,3]
 [1,]    1    2    3
 [2,]    1    2    4
 [3,]    1    3    2
 [4,]    1    3    4
 [5,]    1    4    2
 [6,]    1    4    3
 [7,]    2    1    3
 [8,]    2    1    4
 [9,]    2    3    1
[10,]    2    3    4
[11,]    2    4    1
[12,]    2    4    3
[13,]    3    1    2
[14,]    3    1    4
[15,]    3    2    1
[16,]    3    2    4
[17,]    3    4    1
[18,]    3    4    2
[19,]    4    1    2
[20,]    4    1    3
[21,]    4    2    1
[22,]    4    2    3
[23,]    4    3    1
[24,]    4    3    2