使用准报价评估条件

时间:2019-09-13 17:33:01

标签: r dplyr rlang

我想使用准引号基于某个df过滤数据帧filter_phrase(类似于此问题here)。但是,我不想动态设置列,而是要评估整个条件:

library(dplyr)
library(rlang)
df <- data.frame(a = 1:5, b = letters[1:5])
filter_phrase <- "a < 4"
df %>% filter(sym(filter_phrase))

预期输出应如下所示:

> df %>% filter(a < 4)
  a b
1 1 a
2 2 b
3 3 c

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

选项为parse_expr。 “ filter_phrase”是一个字符串形式的表达式。我们可以使用langauge将其转换为parse_expr类,然后使用(!!

进行评估
library(dplyr)    
df %>%
     filter(!! rlang::parse_expr(filter_phrase))
#  a b
#1 1 a
#2 2 b
#3 3 c