【发布时间】:2019-02-16 13:21:44
【问题描述】:
我正在阅读关于准引用的一些注释:https://dplyr.tidyverse.org/articles/programming.html。
在我第一次阅读之后,我尝试了一些东西。有一个特别让我感到困惑:
x <- "foo"
q <- quo(x)
print(x)
<quosure>
expr: ^x
env: global
太好了,我创建了一个quosure!然后我想
!!q
将立即计算表达式,产生“foo”。当然,这是错误的!
!!q
Error in !q : invalid argument type
我不明白为什么。我错过了什么?
运行: R版本3.5.1(2018-07-02)——“羽毛喷雾” 版权所有 (C) 2018 统计计算 R 基金会 平台:x86_64-pc-linux-gnu(64位)
软件包 rlang 版本:0.2.1
【问题讨论】:
-
顺便说一句,我正在编写一个 tidyeval bookdown。 WIP,但它应该已经比 dplyr vignette tidyeval.tidyverse.org
-
期待!
-
FWIW,我发现这些位很有帮助:“确定这些变量在何处传递给其他引用函数并用 !! 取消引用 ...我们最终得到一个自动引用其参数 group_var 和 summary_var 的函数,并且当它们被传递给其他引用函数时取消引用它们。”建立 dplyr 函数是引用函数的连接是有帮助的。此外,UQ() 提供的错误信息比 !! - 你不只是使用 !!在开放代码中。
-
是的,这是 tidyeval UI 最大的缺点,
!!不是真正的运算符,所以在 tidyeval 函数之外使用它不一定会出错,它会尝试占用对其论点的双重否定。
标签: r tidyverse tidyeval quosure quasiquotes