tidyeval way to programatically send values to fil

2019-07-21 03:49发布

问题:

Picking up on an earlier thread, (Use string as filter in dplyr?), what would the new tidyeval answer for this be, as filter_ is being deprecated.

Is there a way to use a string variable as the filter argument in dplyr? For example:

filter(iris,Sepal.Length > 6)

would be replaced with

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

回答1:

Maybe:

filter(iris, !! rlang::parse_expr(string))

But as far as I understand the tidyeval philosophy, code as string is frowned upon and there shouldn't be string <- 'Sepal.Length > 6' in the first place.

Maybe instead:

condition <- expr(Sepal.Length > 6)
filter(iris, !! condition)


标签: r dplyr tidyeval