This question already has answers here:
Error in if/while (condition) {: missing Value where TRUE/FALSE needed

(3个答案)


在10个月前关闭。




这是一个可重现的示例:

我想查看tac2是否小于tac的80%,如果是,则将下降幅度限制为tac的80%。

if((tac2 [i]-tac) 缺少需要TRUE/FALSE_的值
tac = 1000
tac2= c(790,600,678,900,1200,300,800,9000)

 R
for (i in tac2) {
  if ((tac2[i]-tac) < tac*.8) {
  tac2[i] <- tac - tac*.2
} else {
  tac2[i] = tac2[i]
  print(tac2)
}
}

最佳答案

看来问题出在for (i in tac2)中。您的i将成为tac2中的值,因此在循环的第一次迭代中,我为790。由于tac2 [790]不存在,您将收到错误消息。

相反,请尝试for (i in 1:length(tac2))。无论tac2多么长,都会在数字1上循环。

10-08 17:42