写入dplyr函数以传递给组映射
问题是将函数f应用于TIBLE的每组。这是一种更简单的方法,但我想使用写入dplyr函数以传递给组映射,r,dplyr,R,Dplyr,问题是将函数f应用于TIBLE的每组。这是一种更简单的方法,但我想使用group\u map()函数来解决这个问题 使用的数据:dplyr包的星战 我想得到的是,考虑到变量性别和物种,一组TIBLE的身高的平均值。我知道问题可以通过以下方式轻松解决: starwars %>% group_by(gender, species) %>% summarise(mean = mean(height, na.rm = TRUE)) 但是,我希望在函数中实现摘要(mean=mean(h
group\u map()
函数来解决这个问题
使用的数据:dplyr包的星战
我想得到的是,考虑到变量性别和物种,一组TIBLE的身高的平均值。我知道问题可以通过以下方式轻松解决:
starwars %>% group_by(gender, species) %>%
summarise(mean = mean(height, na.rm = TRUE))
但是,我希望在函数中实现摘要(mean=mean(height,na.rm=TRUE))
,并发送到group\u map()
我试图创建f()
函数来获取data
参数,该参数是一个具有先前定义的组的可绑定对象。f()
函数的第二个参数是..
,这样我就可以将感兴趣的变量从数据
传递到f()
f%总结(平均值=平均值(…,na.rm=TRUE))
}
星战%>%按性别、物种分组%>%
组图(.tbl=,.f=~f(护墙板=.x),高度)
解决方案:
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_1%func_1(变量=身高、性别、物种)
或
func_2您需要在函数中使用tidyeval。请参见示例中的iTunesing…
,这意味着您希望获得多列的平均值。是这样的,还是你只想通过一列来了解平均值?嗨,卡米尔,谢谢你提供的信息。tidyeval为我服务,但我会考虑如何处理多个变量。这可能是一个很好的锻炼。它非常接近你想要做的事情。
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))