【发布时间】:2018-01-22 12:36:24
【问题描述】:
在当前版本的 dplyr 中,select 参数可以按值传递:
variable <- "Species"
iris %>%
select(variable)
# Species
#1 setosa
#2 setosa
#3 setosa
#4 setosa
#5 setosa
#6 setosa
#...
但是group_by 参数不能按值传递:
iris %>%
group_by(variable) %>%
summarise(Petal.Length = mean(Petal.Length))
# Error in grouped_df_impl(data, unname(vars), drop) :
# Column `variable` is unknown
documented dplyr::select behaviour 是
iris %>% select(Species)
记录在案的documented dplyr::group_by behaviour是
iris %>%
group_by(Species) %>%
summarise(Petal.Length = mean(Petal.Length))
- 为什么
select和group_by在按值传递参数方面不同? - 为什么第一个
select呼叫有效,以后还会继续有效吗? - 为什么第一个
group_by呼叫不起作用?我想弄清楚我应该使用quo()、enquo()和!!的组合来使其工作。
我需要这个,因为我想创建一个将分组变量作为输入参数的函数,如果可能的话,分组变量应该作为字符串给出,因为其他两个函数参数已经作为字符串给出。
【问题讨论】:
-
在
browseVignettes(package = "dplyr")中,您会找到一个关于编程的内容,它涵盖了什么是/将是惯用的,无论如何。 -
group_by(get(variable))应该让它工作,但不知道为什么select和group_by在这方面有所不同。