我想知道为什么在运行下面的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))
答案 0 :(得分:0)
假设labels
是向量,is.na(labels)
将返回TRUE / FALSE值的向量。在R中,标准if
语句必须求值为单 TRUE / FALSE值。警告消息告诉您if
生成了多个值,并根据第一个值评估真值。
如果您的目标是检查labels
中的{em>任何值是否为NA
,请执行以下操作:
if (any(is.na(labels))) {
...
}
如果您的目标是将某个向量的NA
元素替换为另一个向量的值,则可能需要ifelse()
。