Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/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
使用purrr将映射函数应用于中的分组数据帧_R_Dplyr_Group By_Split_Purrr - Fatal编程技术网

使用purrr将映射函数应用于中的分组数据帧

使用purrr将映射函数应用于中的分组数据帧,r,dplyr,group-by,split,purrr,R,Dplyr,Group By,Split,Purrr,我正在尝试应用一个函数,该函数接受多个输入(根据手头的问题而不同的列),并将其应用于数据帧列表。我从这个示例中获取了以下代码:并对其进行了修改,以包含我选择的另一个度量(“choice”)。但是,此代码会引发一个错误: .f(.x[[i]],…)中出错:未使用的参数(choice=“disp”) 理想情况下,我希望能够创建一个分组的数据帧(使用group_by或split(),并在数据帧中的不同组上应用一个函数,但是我无法解决这个问题。因此,请查看数据帧列表 mtcars2 <- mtca

我正在尝试应用一个函数,该函数接受多个输入(根据手头的问题而不同的列),并将其应用于数据帧列表。我从这个示例中获取了以下代码:并对其进行了修改,以包含我选择的另一个度量(“choice”)。但是,此代码会引发一个错误:

.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")

mtcars2修复上述代码的三件事:

  • 在函数中添加
    choice
    作为参数

  • 从rlang 0.4.0开始,通过删除
    x使函数具有输出,也可以在函数(curly-curly)中使用
    sum({{choice}})
    ,这样就不需要在调用函数时显式引用所选变量。
    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))
    
    mtcars2$group <- sample(c("a", "b", "c"), 32, replace = TRUE)
    mtcars2 %>% 
        as_tibble() %>% 
        nest(-group) %>% 
        mutate(out = map(data, my_fun, quo(disp))) %>% 
        unnest(out)