假设我们有这个:
x=5
y=NA
x1=8
y1=NA
ifelse(x < y, x1, y1)
[1] NA
因为其中之一是NA,我希望ifelse返回该值。 在这种情况下非常理想的输出:
ifelse(x < y, x1, y1)
[1] 8
答案 0 :(得分:1)
我可能建议在这里使用is.na
ifelse(x < y || (is.na(y) + is.na(x)) == 1, x1, y1)
[1] 8
如果x < y
或第二个参数y
为NA
,则条件将返回true。
答案 1 :(得分:1)
ifelse(any(is.na(x),is.na(y)),
c(x1,y1)[c(!is.na(x),!is.na(y))],
ifelse(x < y, x1, y1))
首先,我们检查是否存在NA,如果存在,则返回与非NA匹配的答案。如果没有NA,我们将运行OP编写的原始ifelse。