在R中列出所有的组合

3

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

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) {
   ...
   }
}

相关 https://stackoverflow.com/questions/33715496/r-interaction-combinations-rather-than-permutations - alexpghayes
2个回答

3

如果你想要做更多的事情而不仅仅是打印,这个工具可能会有用:

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接