在R中创建条件轴标签?

时间:2018-05-14 14:13:57

标签: r function if-statement plot

我想知道为什么在运行下面的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 :(得分:0)

假设labels是向量,is.na(labels)将返回TRUE / FALSE值的向量。在R中,标准if语句必须求值为 TRUE / FALSE值。警告消息告诉您if生成了多个值,并根据第一个值评估真值。

如果您的目标是检查labels中的{em>任何值是否为NA,请执行以下操作:

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

如果您的目标是将某个向量的NA元素替换为另一个向量的值,则可能需要ifelse()