tidyeval способ программной отправки значений в фильтр

Переходя к предыдущей теме, (использовать строку как фильтр в dplyr?), что бы новый tidyeval ответ на этот вопрос быть, поскольку filter_ устарел.

Есть ли способ использовать строковую переменную в качестве аргумента фильтра в dplyr? Например:

filter(iris,Sepal.Length > 6)

будет заменен на

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

person ashleych    schedule 03.08.2018    source источник


Ответы (1)


Может быть:

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

Но, насколько я понимаю философию tidyeval, код как строка не одобряется, и вообще не должно быть string <- 'Sepal.Length > 6'.

Может, вместо этого:

condition <- expr(Sepal.Length > 6)
filter(iris, !! condition)
person Aurèle    schedule 03.08.2018
comment
expr - это именно то, что я искал! - person ashleych; 03.08.2018