如果条件向量包含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