在R中打印无重复的组合

时间:2018-06-19 12:19:50

标签: r combinatorics

我想在R中获得以下打印输出:

1,2,3
1,2,4
1,3,4

2,1,3
2,1,4
2,3,4

3,1,2
3,1,4
3,2,4

4,1,2
4,1,3
4,2,3

类似的东西:

for (main in 1:4){
  for (i in 1:4) {
    if (i != main){
      for (j in 1:4){
        if (j != main & j != i){print main,i,j}}}}}

我想将上述12个结果放入向量中。谢谢。

1 个答案:

答案 0 :(得分:4)

如注释中所述,这是排列和组合之间的奇数组合。这里是一个可能的解决方案:

Reduce(rbind,
  lapply(1:4, function(i){
    t(rbind(i, combn((1:4)[-i], 2)))
  })
)
#>       i    
#>  [1,] 1 2 3
#>  [2,] 1 2 4
#>  [3,] 1 3 4
#>  [4,] 2 1 3
#>  [5,] 2 1 4
#>  [6,] 2 3 4
#>  [7,] 3 1 2
#>  [8,] 3 1 4
#>  [9,] 3 2 4
#> [10,] 4 1 2
#> [11,] 4 1 3
#> [12,] 4 2 3