列出R中的所有组合

时间:2017-09-30 19:33:15

标签: r nested-loops

如果我想列出所有组合,我可以使用嵌套循环:

for (int i = 1; i <= 5; i++) {
    for (int j = i + 1; j <= 5; j++) {
        System.out.println("Comparing " + i + " and " + j);
    }
}

我如何在R中实现相同的功能?我认为我没有正确理解R中循环的语法,因为这不起作用(j继续增加到5以上)。

for (i in 1:5) {
   for (j in i+1:5) {
   ...
   }
}

2 个答案:

答案 0 :(得分:3)

如果您想要在打印之外做任何事情,这可能很有用:

X <- expand.grid(i = 1:5,
                 j = 1:5)

X <- X[X$i <= X$j, ]

答案 1 :(得分:1)

问题在于操作顺序,+运算符在:运算符之前计算。试试这个。


for (i in 1:5) {
  for (j in i+(1:5)) {
    cat(paste0("i:", i, "; j: ", j, "\n"))
  }
}
#> i:1; j: 2
#> i:1; j: 3
#> i:1; j: 4
#> i:1; j: 5
#> i:1; j: 6
#> i:2; j: 3
#> i:2; j: 4
#> i:2; j: 5
#> i:2; j: 6
#> i:2; j: 7
#> i:3; j: 4
#> i:3; j: 5
#> i:3; j: 6
#> i:3; j: 7
#> i:3; j: 8
#> i:4; j: 5
#> i:4; j: 6
#> i:4; j: 7
#> i:4; j: 8
#> i:4; j: 9
#> i:5; j: 6
#> i:5; j: 7
#> i:5; j: 8
#> i:5; j: 9
#> i:5; j: 10