Предупреждение очень полезно в этом случае.Функция xyplot()
имеет код, который проверяет любое значение NA
в параметре cf.col
.В вашем случае вы указали cf.col=c('black', 'RoyalBlue')
в вызове функции, поэтому код сообщал вам, что проверка NA будет выполняться только для первого элемента, который в вашем случае является значением black
.
if(is.na(c(-2,NA,2))) print("hi")
# Warning:
In if (is.na(c(-2, NA, 2))) print("hi") :
the condition has length > 1 and only the first element will be used
hi
не был напечатан, потому что первое значение, -2
не является NA, и, следовательно, условие не выполнено.
Тем не менее, рассмотрим следующий пример:
if(is.na(c(NA,NA,2))) print("hi")
[1] "hi"
Warning message:
In if (is.na(c(NA, NA, 2))) print("hi") :
the condition has length > 1 and only the first element will be used
Обратите внимание, что на этот раз первым элементом является NA
, поэтому условие оценивается как true, и впоследствии выводится hi
.
Используемая вами функция, xyplot()
, вероятно, ожидала одно значение, а не вектор, следовательно, реализация is.na()
.Если бы я был автором, я бы добавил дополнительный код, чтобы проверить, был ли это вектор длины 2 и выше перед вызовом is.NA
, и вернул бы соответствующее предложение, или использовал бы функцию anyNA
или многие другие эквивалентные:
if(anyNA(c(NA,NA,2))) print("hi")
[1] "hi"
Нет предупреждений!
Надеюсь, что это ответ на ваш вопрос!