有问题的问题是将函数f应用于每个小标题。这是一种更简单的方法,但是我想使用group_map()
函数来解决问题。
使用的数据: dplyr 软件包中的星际争霸。
我想要的是获得考虑到变量 gender 和 species 的分组小标题的 height 变量的平均值。我知道通过执行以下操作可以轻松解决该问题:
starwars %>% group_by(gender, species) %>%
summarise(mean = mean(height, na.rm = TRUE))
但是,我的愿望是在函数中实现summarise(mean = mean(height, na.rm = TRUE))
并发送给group_map()
。
我试图创建一个f()
函数,该函数获得data
参数,该参数是具有先前定义的组的小对象。 f()
函数的第二个参数为...
,这样我就可以将感兴趣的变量从data
传递到f()
。
f <- function(dados, ...){
dados %>% summarise(mean = mean(..., na.rm = TRUE))
}
starwars %>% group_by(gender, species) %>%
group_map(.tbl = ., .f = ~f(dados = .x), height)
答案 0 :(得分:0)
解决方案:
func_1 <- function(dados, var, ...){
var_interesse <- enquo(var)
dots <- enquos(...)
# Could be attributed direct reference ...
dados %>% group_by(!!!dots) %>%
summarise(media = mean(x = !!var_interesse, na.rm = TRUE))
}
starwars %>% func_1(var = height, gender, species)
或
func_2 <- function(dados, var){
var_interesse <- enquo(var)
#dots <- enquos(...)
dados %>% summarise(media = mean(x = !!var_interesse, na.rm = TRUE))
}
agrupamento <- starwars %>% group_by(gender, species)
agrupamento %>%
group_map(.tbl = ., .f = ~func_2(dados = .x, var = height))