我正在尝试命名一个的输出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
?
我相信.names
in across
只允许引用{col}
and {fn}
inside 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)