r-如何处理条件数据.包含NA的帧下标



如果条件向量包含NAs,是否有方法使用条件下标?假设我有一个类似的数据帧

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

如果不是因为数据帧$d中的NA,这将是直接的。我已经看到了像这里这样的%in%语法来绕过NA,但不知道如何针对条件管理它。我可以看出,这在某种程度上是一个普遍的问题,因为我不太确定我是想获得条件中缺失值的NA还是其他什么。但我也有兴趣了解人们如何处理这种情况。

在我的具体情况下,当NA在这种情况下被视为FALSE时,In将很有帮助。

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

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

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

dframe[ which(dframe$d > 9), "a"] <- NA

你很接近。你有这种情况和%in%。只是没有链接。其实很简单。只需将%in%TRUE一起使用,它就会返回所有其他值,其中NA将被FALSE 取代

 dframe[(dframe$d > 9) %in% TRUE, "a"] <- NA

最新更新