Как исправить в 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, введенные в результате принуждения
Как исправить: неправильное количество индексов в матрице
Как отремонтировать: количество заменяемых элементов не кратно длине замены