0

このコード(以下)を実行しようとすると、「Error in if(temp [ii] == 0){:TRUE/FALSEが必要な場所に値がありません」というメッセージが表示されます。

temp = c(2.15, 3.5, 0, 0, 0, 1.24, 5.42, 6.87)
tm = length(temp)
for (i in 1:tm){
    if (temp[i] == 0) {
        counter3 = 1
        last = temp[i - 1]
        for (ii in i + 1:tm){
            if (temp[ii] == 0) {
                counter3 = counter3 + 1
            }
            if (temp[ii] != 0) {
                nxt = temp[i + counter3]
            }
        }
    }
}
4

3 に答える 3

3

あなたの問題は、範囲外になるためにtemp[ii]戻ってくることです:NAii

ii = i + 1:tm     #Your declaration for ii
ii = 1:tm + 1:tm  #Evaluates to

したがってii、間違いなくtm(したがってlength(temp)、ある時点で.

ループをよりよく理解/デバッグするためにfor、インデックスだけを出力することを検討してください。

for(i in 1:tm)
{
    print(i)
    for(ii in i + 1:tm)
        print(ii)
}
于 2013-03-08T16:52:00.563 に答える
1

言語を知らないと難しいですが、問題は、iが上限にあるときに、iiの値がtempの長さよりも大きくなる可能性があることだと思います。範囲外のインデックスなどを期待していましたが、言語を知らなくても、誰が知っているのでしょうか。問題が解決することを願っています。

于 2013-03-08T16:30:09.860 に答える