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.
刚刚进入 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.