如果某些但不是全部元素为NA,则为TRUE

时间:2019-06-17 12:40:23

标签: r if-statement

这不能太难,但是我被卡住了。

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

我有三个可能的向量。它们可以没有NAx1),一些NAx2)或只有NAx3)。我想要 仅在有一些NA时执行的操作,而只有NA个时才执行的操作。

如何编写仅当某些元素为TRUE时返回NA的条件(而当全部或全部都不为FALSE时返回NA)。 / p>

所需的输出

  • x1假
  • x2是
  • x3假

1 个答案:

答案 0 :(得分:2)

使用allis.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))