Оператор двойного равенства не может терпеть NAни одну из сторон. Если я определю: x = NAи затем сделаю то, if (x == NA){ ... }то эта ошибка будет выдана во время выполнения, когда анализатор исследует левую часть двойного равенства. Чтобы исправить эту ошибку, убедитесь, что каждая переменная в вашем условии не используется NA is.na(your_variable).
Эрик Лещинский
Ответы:
203
Оценка 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(NULL){}## Error in if (NULL) { : argument is of length zeroif("not logical"){}## Error: argument is not interpretable as logicalif(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)
.Ответы:
Оценка
condition
привела вNA
.if
Условное должен иметь либоTRUE
илиFALSE
результат.Это может произойти случайно по результатам расчетов:
Чтобы проверить, отсутствует ли объект, используйте
is.na(x)
вместоx == NA
.Смотрите также связанные ошибки:
Ошибка в if / while (условии) {: аргумент имеет нулевую длину
Ошибка в if / while (условие): аргумент не интерпретируется как логический
источник
Я столкнулся с этим при проверке нулевой или пустой строки
изменил это на
источник
!(length(x) == 1L && nzchar(x))