【发布时间】:2021-07-30 16:15:49
【问题描述】:
我正在尝试创建一个函数,其中我使用多个函数汇总数据框中的几列,然后稍后改变这些函数的输出。
下面给出一个更简单的例子:
group_mean_plus_one <- function(df, groups, var){
df %>%
group_by(across({{groups}})) %>%
summarise(across({{ var }},
.fns = list(mean = ~mean(.x, na.rm=TRUE),
sd = ~sd(.x, na.rm=TRUE)),
.names = "{.col}_{.fn}")) %>%
mutate("mean_plus_one_{{var}}" := !!rlang::expr("{{var}}_mean + 1"))
}
tibble(mtcars) %>%
group_mean_plus_one(groups = cyl, var = hp)
这里的想法是我们按group 中的每个变量分组,并使用给定的函数汇总var 中的每个变量。
进一步,我们希望引用在summarise 块中创建的变量和来自这些的mutate 新变量。但是,我很难从 summarise 块中引用这些动态创建的变量名。
运行以上返回:
# A tibble: 3 x 4
cyl hp_mean hp_sd mean_plus_one_hp
<dbl> <dbl> <dbl> <chr>
1 4 82.6 20.9 {{var}}_mean + 1
2 6 122. 24.3 {{var}}_mean + 1
3 8 209. 51.0 {{var}}_mean + 1
当我希望它返回时:
# A tibble: 3 x 4
cyl hp_mean hp_sd mean_plus_one_hp
<dbl> <dbl> <dbl> <dbl>
1 4 82.6 20.9 83.6
2 6 122. 24.3 123.
3 8 209. 51.0 210.
非常感谢任何帮助,在此先感谢 :)
【问题讨论】: