Tidy Eval:在现状中使用“=”

Tidy Eval: Using '=' inside of quo

刚刚进入 tidy eval,我希望将它应用到我当前的一个项目中。

我知道您可以像这样定义表达式以传递给 tidyverse 函数,例如:

library(rlang)
library(tidyverse)

my.filter <- quo(species=='Human')
my.summary <- quo(mean(height, na.rm=T))

starwars %>%
  filter(!!my.filter) %>%
   summarise(!!my.summary)

但是,如果我要重命名汇总列怎么办?说给Avg_Ht?如果我在 quo() 函数中尝试这个:

    my.summary <- quo(Avg_Ht=mean(height, na.rm=T))

我遇到了:

Error in quo(Avg_Ht = mean(height, na.rm = T)) : 
  unused argument (Avg_Ht = mean(height, na.rm = T))

这里有什么帮助吗?

谢谢!

通读完这篇 github issue 后,您似乎可以使用 quos!!! 来完成此操作。

我最初使用 := 分配名称

my.summary <- quos(Avg_Ht := mean(height, na.rm=T))

但事实证明这不是必需的。

my.summary <- quos(Avg_Ht = mean(height, na.rm=T))

starwars %>%
     filter(!!my.filter) %>%
     summarise(!!!my.summary)

# A tibble: 1 x 1
  Avg_Ht
   <dbl>
1   177.