整洁的评估:在现状中使用'='

时间:2018-10-24 22:01:06

标签: r dplyr tidyverse tidyr tidyeval

进入整洁的评估阶段,并希望将其应用于我当前的项目之一。

我知道您可以像这样定义表达式,以将其传递到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))

这里有帮助吗?

谢谢!

1 个答案:

答案 0 :(得分:5)

通读此github issue后,您似乎可以使用LinkedHashMapquos来做到这一点。

我最初使用!!!来分配名称

:=

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

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