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