是否有办法在dplyr筛选器中执行存储的字符串命令?有操作员或操作员

是否有办法在dplyr筛选器中执行存储的字符串命令?有操作员或操作员,r,string,filter,dplyr,R,String,Filter,Dplyr,我有一个代码,其中列名以字符串格式存储在列表中。我试图做的是使用OR运算符过滤具有这些列名的数据集。在下面的示例中,我知道列表中的项目数,因此我可以使用列表索引值在单行中运行 我希望能够在一个函数中运行它,其中输入可能在列名列表中有未知数量的项 iris len = c("Sepal.Length", "Petal.Length") # this is what I am trying to do but with dynamic l

我有一个代码,其中列名以字符串格式存储在列表中。我试图做的是使用OR运算符过滤具有这些列名的数据集。在下面的示例中,我知道列表中的项目数,因此我可以使用列表索引值在单行中运行

我希望能够在一个函数中运行它,其中输入可能在列名列表中有未知数量的项

  iris
  len = c("Sepal.Length", "Petal.Length")
    
  # this is what I am trying to do but with dynamic list  
  iris %>% filter(!!sym(len[[1]]) > 6 | !!sym(len[[2]]) > 6)
我考虑的一件事是是否可以将命令存储在字符串变量中。像这样的

txt_new = ""
for (i in 1:length(len)) {
    txt = ""
    txt = paste0("!!sym(len[[",i ,"]]) > 6|")
    txt_new = paste0(txt_new, txt)
}
txt = substr(txt_new,1,nchar(txt_new)-1)
最终我会得到
txt=“!!sym(len[[1]])>6 |!!sym(len[[2]])>6”

但我仍然需要将execute字符串放在filter中,而filter也不起作用

iris %>% filter(eval(txt))
有没有办法做到这一点。使用需要用于使用OR运算符筛选数据集的变量的动态列表。如果是,那么肯定会更容易。

使用cur_data()如下:

iris %>% filter(cur_data()[[len[1]]] > 6 & cur_data()[[len[2]]] > 6)
或点:

iris %>% filter(.[[len[1]]] > 6 & .[[len[2]]] > 6)

这是一条你正在做的事情的道路

len%
过滤器(!!rlang::parse_expr(txt))