1

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になります。エラー メッセージが表示されない場合は、ベクトルのすべての位置が値で満たされています (ゼロはありません)。

4

3 に答える 3

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) ...
于 2013-02-21T18:42:25.650 に答える
1

@justin の発言をさらに詳しく説明すると、エラー メッセージは基本的に、T/F を予期していたが取得できなかったことを示しています。

このようなエラーが表示された場合、最善の方法は、ステートメント内
の括弧内の値を調べることです。if( .... )

この特定のケースでは、sum.wt1y1 == 0 | sum.wt2y2 == 0おそらく犯人を見つけるのに役立つでしょう。

于 2013-02-21T18:52:44.340 に答える
1

これを試して:

which(is.na( sum.wt1y1 == 0 | sum.wt2y2 == 0))
于 2013-02-21T18:57:20.433 に答える