2

for次のようなJavaスタイルのループを書きたい:

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これら 2 つのループを記述する正しい方法は何ですか?

4

1 に答える 1

3

内部forwhile次のように置き換えることができます。

for (i in 1:3) {
    j <- 1
    while (j < i) {
        print(sprintf('%d %d', i, j))
        j <- j + 1
    }
}

Javaforが C に似ていると仮定すると、意味的に言えば、これは基本的にそこでも発生することです。

于 2013-06-04T15:54:37.240 に答える