if / while(条件)のエラー{:TRUE / FALSEが必要な場所に値がありません


159

次のエラーメッセージが表示されました。

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

または

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

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


5
二重等号演算子はNAどちら側でも許容できません。私が定義した場合x = NAif (x == NA){ ... }次に実行すると、実行時にパーサーがdoubleのequalsの左側を調べるときにこのエラーがスローされます。このエラーを修正するには、条件式のすべての変数がを使用してNAでないことを確認してくださいis.na(your_variable)
Eric Leschinski 2017

回答:


203

の評価のcondition結果はでしたNAif条件は、どちらか持っている必要があります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

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


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

if / while(条件){のエラー:引数の長さがゼロです

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

10

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

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

に変更しました

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

1
Fyi、またあります!(length(x) == 1L && nzchar(x))
フランク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.