使用purrr将映射功能应用于分组数据框

时间:2018-09-05 04:38:11

标签: dictionary split group-by dplyr purrr

我试图应用一个接受多个输入(此列根据当前问题而变化)的函数,并将其应用于数据帧列表。我从此示例中获取了以下代码:Map with Purrr multiple dataframes and have those modified dataframes as the output,并对其进行了修改,以包括我选择的另一个度量标准(“选择”)。但是,此代码将引发错误“ .f(.x [[i]],...)中的错误:未使用的参数(choice =“ disp”))”。

理想情况下,我希望能够创建一个分组的数据框(使用group_by或split()并将一个函数应用于该数据框内的不同组,但是尚无法解决此问题。而是数据帧列表。

mtcars2 <- mtcars 

#change one variable just to distinguish them 
mtcars2$mpg <- mtcars2$mpg / 2

#create the list
dflist <- list(mtcars,mtcars2)

#then, a simple function example
my_fun <- function(x) 

{x <- x %>%
  summarise(`sum of mpg` = sum(mpg), 
            `sum of cyl` = sum(cyl),
            `sum of choice` = sum(choice))}

#then, using map, this works and prints the desired results
list_results <- map(dflist,my_fun, choice= "disp")

1 个答案:

答案 0 :(得分:3)

修复以上代码的三件事:

  1. 在函数中添加RoomDatabase_Impl作为参数。
  2. 通过删除choice来使函数具有输出
  3. 使用tidyeval使“选择”参数起作用。

因此,编辑后的代码如下:

x <-

如果您希望停留在数据框/小节内,则使用nest创建list-columns可能会有所帮助。

my_fun <- function(x, choice) 

{x %>%
summarise(`sum of mpg` = sum(mpg), 
          `sum of cyl` = sum(cyl),
          `sum of choice` = sum(!!choice))}

list_results <- map(dflist, my_fun, choice = quo(disp))