如何在R的dplyr自定义函数中让grouped_by列显示变量名
问题解决:让grouped_by列显示分组变量名称而非取值
现有代码运行后,grouped_by列输出的是分组变量的具体取值(如setosa),但需求是让该列显示变量名称(如Species)。
修改后的代码
library(dplyr) grouped_mean_and_label <- function(var){ iris%>% group_by({{ var }})%>% summarize(Sepal.Length = mean(Sepal.Length))%>% mutate(grouped_by = rlang::as_name(rlang::ensym(var))) } grouped_mean_and_label(Species)
运行结果
# A tibble: 3 × 3 Species Sepal.Length grouped_by <fct> <dbl> <chr> 1 setosa 5.01 Species 2 versicolor 5.94 Species 3 virginica 6.59 Species
说明
- 使用
rlang::ensym(var)将传入的符号参数转换为符号对象,再通过rlang::as_name()将其转为字符串,即可获取变量名称而非取值。 - 也可以用
as.character(substitute(var))替代,效果一致,前者更贴合tidyverse生态的语法风格。
内容的提问来源于stack exchange,提问作者Richard Martin
相关产品推荐
相关产品推荐

