ИСТИНА, если некоторые, но не все элементы являются НЗ - PullRequest
1 голос
/ 17 июня 2019

Это не может быть слишком сложно, но я застрял.

x1 <- c(1, 1, 1, 2)
x2 <- c(NA, NA, 1, 2, 3)
x3 <- c(NA, NA, NA)

У меня есть три возможных вектора. Они могут иметь либо NA s (x1), либо NA s (x2), либо только NA s (x3). я хочу операция, которая должна выполняться только при наличии некоторых NA с, но не при наличии только NA с.

Как записать условие, которое возвращает TRUE, только если некоторые элементы NA (но FALSE, когда все или ни один из них NA).

Желаемый вывод

  • x1 ЛОЖЬ
  • x2 ИСТИНА
  • x3 FALSE

1 Ответ

2 голосов
/ 17 июня 2019

Использование all и is.na

all_NA <- function(x) ! (all(is.na(x)) | all(!is.na(x)))

all_NA(x3)
#[1] FALSE
all_NA(x2)
#[1] TRUE
all_NA(x1)
#[1] FALSE

Или немного более простая версия (которая выглядит как решение @ David в комментариях)

all_NA <- function(x) any(is.na(x)) & !all(is.na(x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...