如何处理包含NA的条件data.frame下标?

Mat*_*ert 4 r missing-data conditional-statements na

如果条件向量包含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
Run Code Online (Sandbox Code Playgroud)

如果它不是dframe $ d中的NA那么这将是直截了当的.我已经看到这里的%in%语法绕过NAs,但不知道如何管理条件.我可以看出这是一个普遍的问题,因为我不太确定我是否想在条件或其他东西中获得缺失值的NA.但我也有兴趣了解人们如何处理这种情况.

在我的特定情况下,当NA在这种情况下被视为FALSE时,这将简单地有所帮助.

Aru*_*run 5

你很亲密 你有条件和%in%.只是没有链接.实际上很简单.只要使用%in%TRUE它会给后面的所有其他值,其中作为NA将被替换FALSE

 dframe[(dframe$d > 9) %in% TRUE, "a"] <- NA
Run Code Online (Sandbox Code Playgroud)


kit*_*ith 5

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

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

  • 在R Inferno找到了一个更紧凑的替代方案:`dframe [(dframe $ d> 9),"a"] < - NA`.+1,acc. (2认同)