r语言 - 使用准报价评估条件



我想使用准引用根据一些filter_phrase过滤数据帧df(类似于这里的这个问题(。但是,我想评估整个条件,而不是动态设置列:

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

任何帮助将不胜感激。

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

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

最新更新