简单数据框:
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)
绝对不行。发生了什么事情?
我们可以尝试interp
library(layzeval)
df %>%
filter_(interp(~ nm==3000, nm=as.name("rpm")))
# rpm
#1 3000