我一直在尝试运行此代码(下面这里),我收到了消息“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 回答
你的问题是
temp[ii]
正在返回NA
因为ii
超出范围:因此
ii
肯定会大于tm
(因此在某些时候length(temp)
.为了更好地理解/调试
for
循环,请考虑仅打印索引:在不知道语言的情况下很难,但我认为问题是当i处于上限时,ii中的值可能大于temp的长度 . 我曾经期望索引超出范围或类似但不知道语言,谁知道!希望你能解决问题 .
猜测我会说这是在
R
- 如果是这样我猜这一行:导致
NA
,if
条件必须具有TRUE
或FALSE
值 .如果可以的话,使用调试器,我会在
if
块之前询问temp [i]的值 .