首页 > 解决方案 > 在 R 中打印不重复的组合

问题描述

我想在 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 个结果放在一个向量中。谢谢你。

标签: rcombinatorics

解决方案


如评论中所述,这是排列和组合之间的奇怪组合。这是一个可能的解决方案:

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

推荐阅读