如何将过滤器表达式存储为字符串?

Ber*_* V. 4 string parameters r filter

为了分析物种数据库,我经常需要更改许多标准,具体取决于项目范围等。

由于总是更改主脚本本身内的标准非常不方便,因此我开始将各种参数定义为文件中的变量,这些参数exterior parameters.R将被复制到项目特定的文件夹并在那里进行调整,并且这些参数将从文件中获取main.R

这很好用,但是现在我开始过滤表达式,我找不到将它们作为字符串存储在参数文件中的方法。

标准过滤器表达式将是这样的:

 rlb == "1" | rlb == "2" | rlb== "3" | rlb == "G" | rlb == "R" | rld ==
 "1" | rld == "2" | rld== "3" | rld == "G" | rld == "R" | ffh2 > 1 | ffh4
 == 1 | ffh5 == 1 | spa1 == 1 | sap == 1
Run Code Online (Sandbox Code Playgroud)

由于""某些参数,我无法将其分配为字符串变量,因为 R 抱怨存在未知的标记或对象。

如何将此过滤表达式分配给变量,以便稍后可以使用它(例如与eval(my_filter_variable)etc 一起使用)来执行过滤?

akr*_*run 5

除了@Konrad的方法之外,如果表达式是字符串,那么我们可以使用parse_exprfromrlang

library(rlang)
library(dplyr)
df1 %>% 
    filter(!! parse_expr(expr1))
#   col_A col_B
#1     A     1
Run Code Online (Sandbox Code Playgroud)

数据

 df1 <- data.frame(col_A = LETTERS[1:10],
           col_B = 1:10,
           stringsAsFactors = FALSE)

expr1 <-  "col_A == 'A' & col_B == 1"
Run Code Online (Sandbox Code Playgroud)