简体   繁体   中英

Error .. missing value where TRUE/FALSE needed

I have been trying to run this code (below here) and I have gotten that message "Error in if (temp[ii] == 0) { : missing value where TRUE/FALSE needed"...

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]
            }
        }
    }
}

Your problem is that temp[ii] is returning NA because ii goes out of bounds:

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

So ii will definitely be larger than tm (and therefore length(temp) at some point.

In order to better understand/debug for loops, consider printing just the indices:

for(i in 1:tm)
{
    print(i)
    for(ii in i + 1:tm)
        print(ii)
}

At a guess I'm going to say that this is in R - if so I'm guessing that this line:

if (temp[i] == 0) (or temp[ii] == 0)

is resulting in an NA , and if conditions must have a TRUE or FALSE value.

Using a debugger if you can, I'd interrogate the value of temp[i] before the if block.

Difficult without knowing the language, but i think the issue is that the value in ii can be greater than the length of temp when i is at its upper bound. I'd have expected an index out of range or something similar but, without knowing the language, who knows! Hope you get your problem fixed.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM