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