dplyr过滤器选择正确的行,但filter_不是

时间:2016-02-11 10:47:12

标签: r dataframe dplyr

简单数据框:

df=data.frame(rpm=c(3000,4000,5000))

dplyr filter命令正常工作:

> filter(df, rpm == 3000)
   rpm
1 3000

但是,我想使用filter_版本,因为我告诉它更安全的功能。如果不是这样,我会坚持使用subset。这里发生了什么:

> filter_(df, "rpm" == 3000)
[1] rpm
<0 rows> (or 0-length row.names)

绝对不行。发生了什么?

1 个答案:

答案 0 :(得分:3)

我们可以尝试interp

library(layzeval)
df %>%
     filter_(interp(~ nm==3000, nm=as.name("rpm")))
#   rpm
#1 3000