1

我正在阅读有关准引用的一些注释: 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) -- "Feather Spray" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit)

软件包 rlang 版本:0.2.1

4

1 回答 1

2

我测试了你的方法,你是部分正确的。

可以使用!!q,但只能在 quasiquote 环境中使用。

> !! q
  Error in !q : invalid argument type
> UQ(q)
  Error: `UQ()` can only be used within a quasiquoted argument
> quo(!! q)
  <quosure>
  expr: ^x
  env:  global
> quo(!!q)
  <quosure>
  expr: ^x
  env:  global

我已经使用了两者UQ!!确保我的答案始终如一

于 2018-09-12T01:29:37.707 回答