在一个向量中找到NA值的索引

17

我有以下向量:

x <- c(3, 7, NA, 4, 8)

我只想知道向量中NA的索引。例如,如果我想知道7的索引,以下代码将起作用:

> which(x == 7)
[1] 2

我觉得有点奇怪,当我试图找到NA的索引时运行相同的代码并没有给我想要的结果。

> which(x == NA)
integer(0)

我也尝试了以下方法,但它没有起作用:

>  which(x == "NA")
integer(0)

非常感谢你的帮助。

编辑

问题已经被@ccapizzano回答了,但是有人能解释一下为什么上面的代码不起作用吗?


1
@Ben,很好地运用了金徽章的超能力。 - James King
1
@SavedByJESUS "NA" 是字符,而 NA 是一种特殊类型的变量。使用 == 无法比较 NA。为此,您需要使用 is.na 函数。任何使用 ==NA 进行比较的结果都将是 NA(您想要的是索引而不是 NA)。请尝试以下内容:NA == "NA"NA == NA - Wakan Tanka
1个回答

41

您可以尝试以以下方式使用whichis.na函数:

which(is.na(x))
[1] 3

当使用管道%>% which(is.na(.))时,似乎无法工作。 - Alvaro Morales
@AlvaroMorales 如果你一直使用管道符号,它实际上是有效的。例如:x %>% is.na() %>% which() - SavedByJESUS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接