首页 文章

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

提问于
浏览
0

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

  • 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

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

  • 1

    猜测我会说这是在 R - 如果是这样我猜这一行:

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

    导致 NAif 条件必须具有 TRUEFALSE 值 .

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

相关问题