在dplyr中使用字符串作为过滤器?

时间:2014-12-18 19:29:38

标签: r dplyr

有没有办法在dplyr中使用字符串变量作为过滤器参数?例如:

filter(iris,Sepal.Length > 6)

将替换为

string <- 'Sepal.Length > 6'
filter(iris,string)

基本上,我正在寻找整个过滤器字符串作为变量,因为我正在实际创建过滤器字符串。谢谢你的帮助。

2 个答案:

答案 0 :(得分:16)

如果您想使用字符串参数进行过滤,则需要使用filter_()代替filter()

string <- 'Sepal.Length > 6'
filter_(iris, string)

另请注意,建议在编程时使用*_()函数。

答案 1 :(得分:0)

这是我发现在新的tidyval中有效的唯一方法:

> s = "A<3"
> data.frame(A=1:10, B=1:10) %>% filter(eval(str2expression(s)))
  A B
1 1 1
2 2 2

但是,我还没有弄清楚how to do this with multiple conditions