Как исправить в r: отсутствует значение, где требуется true/false


Ошибка, с которой вы можете столкнуться в R:

 Error in if (x[i] == NA) {: missing value where TRUE/FALSE needed

Эта ошибка возникает, когда вы сравниваете значение с NA в операторе if в R, используя синтаксис x == NA .

Оператор if ожидает значения TRUE или FALSE, поэтому вместо этого вам следует использовать is.na(x) , поскольку эта функция всегда возвращает TRUE или FALSE.

Как воспроизвести ошибку

Предположим, мы пытаемся перебрать список значений в векторе в R и печатать слово «отсутствует» каждый раз, когда в векторе есть значение NA:

 #define vector with some missing values
x <- c(2, NA, 5, 6, NA, 15, 19)

#loop through vector and print "missing" each time an NA value is encountered
for (i in 1:length(x)) {
 
 if (x[i] == NA) {
    print(' Missing ')
  }
}

Error in if (x[i] == NA) {: missing value where TRUE/FALSE needed

Мы получаем ошибку, потому что использовали синтаксис x[i] == NA .

Как исправить ошибку

Нам нужно изменить синтаксис на is.na(x) следующим образом:

 #define vector with some missing values
x <- c(2, NA, 5, 6, NA, 15, 19)

#loop through vector and print "missing" each time an NA value is encountered
for (i in 1:length(x)) {
 
 if (is. na (x[i])) {
    print(' Missing ')
  }
}

[1] “Missing”
[1] “Missing”

Обратите внимание, что мы не получаем ошибки и можем напечатать слово «отсутствует» всякий раз, когда встречаем в векторе значение NA.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:

Как исправить: NA, введенные в результате принуждения
Как исправить: неправильное количество индексов в матрице
Как отремонтировать: количество заменяемых элементов не кратно длине замены

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *