web-dev-qa-db-ja.com

if / while(条件){:の欠落TRUE / FALSEが必要な値

私はこのエラーメッセージを受け取りました:

Error in if (condition) { : missing value where TRUE/FALSE needed

または

Error in while (condition) { : missing value where TRUE/FALSE needed

それはどういう意味ですか、そしてどうすればそれを防ぐことができますか?

131
Dombey

conditionの評価の結果、NAが返されました。 if条件式は、TRUEまたはFALSEのいずれかの結果をもたなければなりません。

if (NA) {}
## Error in if (NA) { : missing value where TRUE/FALSE needed

これは計算の結果として偶然に起こる可能性があります。

if(TRUE && sqrt(-1)) {}
## Error in if (TRUE && sqrt(-1)) { : missing value where TRUE/FALSE needed

オブジェクトが不足しているかどうかをテストするには、x == NAではなく is.na(x) を使用します。


関連エラーも参照してください。

if/while(条件){:引数の長さが0の場合のエラー

if/while(条件)のエラー:引数が論理として解釈できない

if (NULL) {}
## Error in if (NULL) { : argument is of length zero

if ("not logical") {}
## Error: argument is not interpretable as logical

if (c(TRUE, FALSE)) {}
## Warning message:
## the condition has length > 1 and only the first element will be used
180
Brian Diggs

Nullまたは空の文字列をチェックするときにこれに遭遇しました

if (x == NULL || x == '') {

に変更しました

if (is.null(x) || x == '') {
7
pbatey