我想编写一个Java风格的for
循环,如下所示:
for (int i = 1; i <= 3; ++i) {
for (int j = 1; j <= i-1; ++j) {
System.out.println(i + " " + j);
}
}
运行上述代码的输出将是
2 1
3 1
3 2
我在R
中对此进行编码的尝试如下:
for (i in 1:3) {
for (j in 1:(i-1)) {
print(sprintf('%d %d', i, j))
}
}
但是,运行此R
代码会提供输出
[1] "1 1"
[1] "1 0"
[1] "2 1"
[1] "3 1"
[1] "3 2"
我意识到这种情况正在发生,因为1:0 = c(1,0)
。
使用seq(1,0)
无效,因为seq(1,0) = c(1,0)
。
编写这两个for
循环的正确方法是什么?
答案 0 :(得分:3)
您可以将内部for
替换为while
:
for (i in 1:3) {
j <- 1
while (j < i) {
print(sprintf('%d %d', i, j))
j <- j + 1
}
}
假设Java的for
与C类似,那么从语义上讲,基本上就是这样。