我的程序有时用R编写(并非总是如此,但几乎总是在模拟运行很多次时)显示此错误消息:
Error in if (sum.wt1y1 == 0 | sum.wt2y2 == 0) zn[k] <- 0 else zn[k] <- (sum.wt1y1 * :
missing value where TRUE/FALSE needed
任何人都可以解释一下这条错误信息的含义是什么?我无法找到错误的位置。最终输出是一个向量。现在在该向量中,一些值显示“值”,但其余为0,0,0,...,0,当出现错误消息时。如果未出现错误消息,则向量的所有位置都将填充值(无零)。
答案 0 :(得分:8)
错误通常由NA
值引起:
if (NA == 0) print('foo')
# Error in if (NA == 0) print("foo") :
# missing value where TRUE/FALSE needed
解决方案是删除缺失的值或包括检查它们:
if (!is.na(x) & x == 0) ...
答案 1 :(得分:1)
为了扩展@justin所说的内容,错误信息基本上是告诉你它正在期待一个T / F但是没有得到它。
当你看到这样的错误时,最好的办法是探索内部的价值
你if( .... )
陈述中的parens。
在这个特定情况下,查看sum.wt1y1 == 0 | sum.wt2y2 == 0
可能会帮助您找到罪魁祸首。
答案 2 :(得分:1)
试试这个:
which(is.na( sum.wt1y1 == 0 | sum.wt2y2 == 0))