Error .. missing value where TRUE/FALSE needed

北城余情 提交于 2019-12-13 04:06:21

问题


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

回答1:


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



回答2:


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.




回答3:


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.



来源:https://stackoverflow.com/questions/15298542/error-missing-value-where-true-false-needed

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!