как бороться с NA в ifelse? - PullRequest
       0

как бороться с NA в ifelse?

0 голосов
/ 01 февраля 2019

Предполагая, что у нас есть это:

x=5
y=NA
x1=8
y1=NA
ifelse(x < y, x1, y1)
[1] NA

, поскольку одним из них является NA, я хочу, чтобы ifelse вернул значение.так желаемый вывод для этого случая:

 ifelse(x < y, x1, y1)
  [1] 8

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019
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, мы запускаем оригинальный ifelse, написанный OP.

0 голосов
/ 01 февраля 2019

Я мог бы предложить использовать is.na здесь:

ifelse(x < y || (is.na(y) + is.na(x)) == 1, x1, y1)

[1] 8

Тогда условие вернет true, если x < y или если второй аргумент y будет NA.

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