【发布时间】:2020-01-02 09:54:07
【问题描述】:
我正在构建一个使用 {{ }}(卷曲或双胡须)的函数
我希望用户能够将多个变量传递给同一个 {{ }},但我不确定这是否可以使用 {{ }}。我找不到任何示例来说明如何做到这一点。
您能否告诉我是否可以,如果可以,请帮助我完成以下最低限度的 reprex 工作?
library(tidyverse)
group_mean <- function(.data, group){
.data %>%
group_by({{group}}) %>%
summarise_all(mean)
}
# Works
mtcars %>%
group_mean(group = cyl)
# Fails
mtcars %>%
group_mean(group = c(cyl, am))
Error: Column `c(cyl, am)` must be length 32 (the number of rows) or one, not 64
【问题讨论】:
-
以前从未见过。你需要的是
group_by_at()...当然要使用NSE -
我不确定你以前从未见过它是什么。是错误还是使用 group_by()
-
从未见过在 R 中用双花括号定义多个变量。
-
奇怪的是它有时会起作用。例如,select_vars % select({{selected}}) %>% summarise_all(mean) } mtcars %>% select_vars(selected = c(cyl, mpg, hp) )
-
根据this announcement of rlang 0.4.0 应使用
...传递多个参数:如果您想将多个参数传递给数据屏蔽动词,请直接传递...