Я получил это сообщение об ошибке:
Error in if (condition) { : missing value where TRUE/FALSE needed
или
Error in while (condition) { : missing value where TRUE/FALSE needed
Что это значит, и как мне это предотвратить?
Я получил это сообщение об ошибке:
Error in if (condition) { : missing value where TRUE/FALSE needed
или
Error in while (condition) { : missing value where TRUE/FALSE needed
Что это значит, и как мне это предотвратить?
Ответы:
Оценка 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
Чтобы проверить, отсутствует ли объект, используйте 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
NA
ни одну из сторон. Если я определю:x = NA
и затем сделаю то,if (x == NA){ ... }
то эта ошибка будет выдана во время выполнения, когда анализатор исследует левую часть двойного равенства. Чтобы исправить эту ошибку, убедитесь, что каждая переменная в вашем условии не используется NAis.na(your_variable)
.