4

如果条件向量包含 NA,有没有办法获得条件下标?假设我有一个这样的 data.frame

dframe <- data.frame(a=c(1,32,4,5,8),b=c(1,2,3,4,5),d=c(NA,5,5,10,9))
dframe[dframe$d > 9,"a"] <- NA

如果不是 dframe$d 中的 NA,这将是直截了当的。我见过像这里%in%这样的语法来绕过 NA,但不知道如何根据条件管理它。我可以看到这是一个普遍的问题,因为我不太确定是否要为条件中的缺失值或其他内容获取 NA。但我也有兴趣了解人们如何处理这种情况。

在我的具体情况下,当 NA 在这种情况下被视为 FALSE 时,它只会有所帮助。

4

2 回答 2

6

您可以将索引限制为非 NA 值

dframe[ dframe$d > 9 & !is.na(dframe$d), "a"] <- NA

编辑:这是R Inferno的更紧凑的替代方案:

dframe[ which(dframe$d > 9), "a"] <- NA
于 2013-02-06T17:33:56.570 回答
5

你很亲密。你有条件和%in%。只是没有链接。实际上很简单。只需%in%TRUE它一起使用就会返回所有其他值,其中 asNA将替换为FALSE

 dframe[(dframe$d > 9) %in% TRUE, "a"] <- NA
于 2013-02-06T17:32:36.047 回答