假设我想计算mean
, min
and max
对于自定义函数中任意数量的组。
玩具数据如下所示:
library(tidyverse)
df <- tibble(
Gender = c("m", "f", "f", "m", "m",
"f", "f", "f", "m", "f"),
IQ = rnorm(10, 100, 15),
Other = runif(10),
Test = rnorm(10),
group2 = c("A", "A", "A", "A", "A",
"B", "B", "B", "B", "B")
)
为了实现两个组(性别,组2)的目的,我可以使用
df %>%
gather(Variable, Value, -c(Gender, group2)) %>%
group_by(Gender, group2, Variable) %>%
summarise(mean = mean(Value),
min = min(Value),
max = max(Value))
可以与新的集成curly-curly
运营商来自rlang
with
descriptive_by <- function(data, group1, group2) {
data %>%
gather(Variable, Value, -c({{ group1 }}, {{ group2 }})) %>%
group_by({{ group1 }}, {{ group2 }}, Variable) %>%
summarise(mean = mean(Value),
min = min(Value),
max = max(Value))
}
通常,我会假设我可以用以下内容替换指定的组...
,但似乎不是这样工作的
descriptive_by <- function(data, ...) {
data %>%
gather(Variable, Value, -c(...)) %>%
group_by(..., Variable) %>%
summarise(mean = mean(Value),
min = min(Value),
max = max(Value))
}
因为它返回错误
map_lgl(.x, .p, ...) 中的错误:未找到对象“性别”