Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
写入dplyr函数以传递给组映射_R_Dplyr - Fatal编程技术网

写入dplyr函数以传递给组映射

写入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

问题是将函数f应用于TIBLE的每组。这是一种更简单的方法,但我想使用
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))