r - 如何将函数参数粘合到 dplyr 的跨函数中的 .names?
问题描述
我正在尝试across
使用{col}
中的函数参数和其中一个函数参数来命名函数的输出
library(tidyverse)
mean_by <- function(data, by, var, prefix = "avg") {
data %>%
group_by({{ by }}) %>%
summarise(across({{ var }}, mean, .names = "{prefix}_{col}"))
}
但是,在 上进行测试时iris %>% mean_by(Species, Sepal.Width)
,我收到找不到对象“前缀”的错误。中的胶水语法.names
对我来说看起来不错,所以我认为这是一个范围问题?参数只能.names
访问已传递给的内容across
吗?
解决方案
我相信只允许引用和inside .names
,但你可以尝试粘贴你的:across
{col}
{fn}
across
prefix
> library(tidyverse)
> mean_by <- function(data, by, var, prefix = "avg") {
data %>%
group_by({{ by }}) %>%
summarise(across({{ var }}, mean, .names = paste0(prefix,"_{col}")))
}
> iris %>% mean_by(Species, Sepal.Width)
`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 3 x 2
Species avg_Sepal.Width
<fct> <dbl>
1 setosa 3.43
2 versicolor 2.77
3 virginica 2.97
推荐阅读
- swift - 如何使用变量的字符串值来更改特定对象的文本
- java - 尝试使用正则表达式查找后跟逗号的数字的出现
- linq - 使用 linq lambda 表达式在同一个表中求和
- jsf - 表达式语言,选择方法,根据值
- android - 如何在 google play 应用描述中添加顶级功能
- python - Python - 如何计算列表中的列表,以及它们之间的算术
- android - 使用 ButterKnife 会使应用程序变慢吗?
- plsql - 如何改进 pl-sql 过程代码,100k 记录需要 2 小时
- python - 用于投票的 Django 表单
- ruby-on-rails - 尝试构建嵌套评论系统 Rails 5