我可以缩写 df[ !is.na(df$val) & df$val > 15] 吗?

Can I abbreviate df[ !is.na(df$val) & df$val > 15]?

我有一个数据框,我想从中提取 val 中的值大于 15 且 val 不是 NA 的记录:

 df[ !is.na(df$val) & df$val > 15, ]

由于我假设在 R 中经常需要这样的比较,所以我想知道是否可以将这种比较缩写为 somewow。事实上,如果这个问题已经在 Whosebug 上被问到,我不会感到惊讶 - 但我无法通过搜索找到它。

subset 省略 NA 值并避免重复 df:

subset(df, val > 15)

which 也消除了 NA 值,但必须重复 df

df[which(df$val > 15), ]

dplyr 包的 filter 类似于基础 subset:

library(dplyr)

df %>% filter(val > 15)

使用 sqldf 删除 NA 值。

library(sqldf)

sqldf("select * from df where val > 15")