代码之家  ›  专栏  ›  技术社区  ›  johannes

从字符串分析和计算quosures

  •  4
  • johannes  · 技术社区  · 7 年前

    有没有一种方法可以从字符串中解析和计算quosure。我希望获得与以下示例相同的输出:

    library(rlang)
    a <- 10
    quo(UQ(a) + 2 * b)
    ## <quosure: global>
    ## ~10 + 2 * b
    

    但是从

    t <- "UQ(a) + 2 * b"
    

    我试过的是:

    # Trial 1:
    quo(expr(t))
    
    # Trial 2: 
    parse_quosure(t)
    
    # Trial 3:
    quo(parse_quosure(t))
    
    2 回复  |  直到 7 年前
        1
  •  4
  •   aosmith    7 年前

    看起来这可能是一份 expr_interp . 根据文档,它“手动处理表达式中的无引号运算符…”。

    所以你可以先用 parse_quosure 然后通过 expr\u interp .

    expr_interp(parse_quosure(t))
    
    <quosure: global>
    ~10 + 2 * b
    
        2
  •  2
  •   d.b    7 年前

    一种方法是使用 parse 转换的步骤 t 到表达式和 eval 对其进行评估。

    eval(parse(text = paste0("quo(",t,")")))
    #<quosure: global>
    #~10 + 2 * b