Создание условных меток оси в R? - PullRequest
0 голосов
/ 14 мая 2018

Мне интересно, почему при запуске функции R ниже я получаю следующее предупреждение:

Warning message: In if (is.na(labels)) axTicks(2) else labels : the condition has length > 1 and only the first element will be used

Поскольку все работает нормально, кроме этого предупреждающего сообщения, мне было интересно, как я могу устранить это предупреждающее сообщение?

bb <- function(labels = NA){

 plot(1, yaxt = "n")

 lab <- if(is.na(labels)) axTicks(2) else labels ## Why this gives a warning message?

 axis(2, at = axTicks(2), labels = lab)
}
# Example of use:
bb(labels = paste0("Hi ", 1:5))

1 Ответ

0 голосов
/ 14 мая 2018

Если предположить, что labels - это вектор, is.na(labels) вернет вектор значений ИСТИНА / ЛОЖЬ.В R стандартный оператор if должен принимать значение single TRUE / FALSE.В предупреждающем сообщении говорится, что if выдает несколько значений и оценивает истинность на основе первого.

Если ваша цель - проверить, есть ли какие-либо значения в labelsare NA, do:

if (any(is.na(labels))) {
  ...
}

Если ваша цель состоит в том, чтобы заменить элементы NA одного вектора значениями другого вектора, вы, вероятно, захотите ifelse().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...