无法理解R中if条件中的错误消息

时间:2013-02-21 18:39:04

标签: r if-statement

我的程序有时用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,当出现错误消息时。如果未出现错误消息,则向量的所有位置都将填充值(无零)。

3 个答案:

答案 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))