错误..缺少值需要TRUE / FALSE

时间:2013-03-08 16:21:09

标签: r for-loop message

我一直在尝试运行此代码(下面这里)并且我收到了消息“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]
            }
        }
    }
}

3 个答案:

答案 0 :(得分:3)

您的问题是temp[ii]正在返回NA因为ii超出界限:

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

答案 1 :(得分:2)

猜测我会说这是R - 如果是这样的话,我猜这一行:

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

产生NAif条件的值必须为TRUEFALSE

如果可以的话,使用调试器,我会在if块之前询问temp [i]的值。

答案 2 :(得分:1)

在不知道语言的情况下很难,但我认为问题是当i处于上限时,ii中的值可能大于temp的长度。我曾经期望索引超出范围或者类似的东西但是,在不知道语言的情况下,谁知道!希望你能解决问题。