See reprex below.
library(tidyverse)
# renaming DISP on the fly does change the name of the output
mtcars %>%
group_by(cyl) %>% summarize_at(vars(DISP = disp),median)
#> # A tibble: 3 x 2
#> cyl DISP
#> <dbl> <dbl>
#> 1 4 108
#> 2 6 168.
#> 3 8 350.
# but doesn't if several functions (see lower case "disp_mean" and "disp_median")
mtcars %>%
group_by(cyl) %>% summarize_at(vars(DISP = disp),funs(mean,median))
#> # A tibble: 3 x 3
#> cyl disp_mean disp_median
#> <dbl> <dbl> <dbl>
#> 1 4 105. 108
#> 2 6 183. 168.
#> 3 8 353. 350.
# replace the following part at the bottom of dplyr:::manip_apply_syms
# syms_names <- map_chr(syms, as_string)
# grid <- expand.grid(var = syms_names, call = names(funs))
# names(out) <- paste(grid$var, grid$call, sep = "_")
manip_apply_syms <- dplyr:::manip_apply_syms
body(manip_apply_syms)[[9]][[4]][[4]] <- quote({
grid <- expand.grid(var = names(syms), call = names(funs))
names(out) <- paste(grid$var, grid$call, sep = "_")
})
assignInNamespace(
"manip_apply_syms", manip_apply_syms,
ns = "dplyr", pos = "package:dplyr")
# still good
mtcars %>%
group_by(cyl) %>% summarize_at(vars(DISP = disp),median)
#> # A tibble: 3 x 2
#> cyl DISP
#> <dbl> <dbl>
#> 1 4 108
#> 2 6 168.
#> 3 8 350.
# now good as well
mtcars %>%
group_by(cyl) %>% summarize_at(vars(DISP = disp),funs(mean,median))
#> # A tibble: 3 x 3
#> cyl DISP_mean DISP_median
#> <dbl> <dbl> <dbl>
#> 1 4 105. 108
#> 2 6 183. 168.
#> 3 8 353. 350.
Created on 2019-02-13 by the reprex package (v0.2.0).
The latter behavior makes more sense to me.
See reprex below.
Created on 2019-02-13 by the reprex package (v0.2.0).
The latter behavior makes more sense to me.