R 在嵌套的TIBLE中分组汇总(带排列)

R 在嵌套的TIBLE中分组汇总(带排列),r,permutation,purrr,R,Permutation,Purrr,我有一个相当简单的问题,答案已经很复杂(通过循环),但我希望有人能在purr中给我一个更优雅的答案 基本上,我正在考虑为我的学生介绍排列,作为统计推断(即t和z值)样板方法的计算替代方法。在我设置的玩具示例中,我使用了一些分组方法(通过dplyr'groupby()和summary())以及通过modeler进行排列。我想知道如何在包含排列的嵌套TIBLE中存储分组平均值 我已经有了一个通过循环的解决方案(通过排列绕过将它们存储在TIBLE中),但我想看看purrr中的解决方案是什么 这是我正在

我有一个相当简单的问题,答案已经很复杂(通过循环),但我希望有人能在
purr
中给我一个更优雅的答案

基本上,我正在考虑为我的学生介绍排列,作为统计推断(即t和z值)样板方法的计算替代方法。在我设置的玩具示例中,我使用了一些分组方法(通过
dplyr'
groupby()
summary()
)以及通过
modeler
进行排列。我想知道如何在包含排列的嵌套TIBLE中存储分组平均值

我已经有了一个通过循环的解决方案(通过排列绕过将它们存储在TIBLE中),但我想看看
purrr
中的解决方案是什么

这是我正在做的一个基本例子

库(tidyverse)
库(建模器)
mtcars%>%
置换(每加仑1000英里)->置换车
perm_总和%
切片(i)%>%
拉(perm)%%>%as.data.frame%%>%
组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别
汇总(平均值=平均值(mpg))%>%
变异(perm=i)->保持这个

perm_sums在我看来,您可能会从操作“列表列”然后使用
tidyr::unest
函数中获益

在本例中,我使用
lappy
对列表列进行操作,但是如果您真的想要,您可以轻松地使用
purr::map

library(tidyverse)
library(modelr)

groupmean <- function(x) {
  x %>% 
    as.data.frame %>%
    group_by(cyl) %>%
    summarize(mpg_mean = mean(mpg), .groups = 'drop')
}

perm_means <- mtcars %>%
  permute(1000, mpg) %>%
  mutate(perm = lapply(perm, groupmean)) %>%
  unnest(perm)

perm_means %>% head
#> # A tibble: 6 x 3
#>     cyl mpg_mean .id  
#>   <dbl>    <dbl> <chr>
#> 1     4     17.5 0001 
#> 2     6     23.6 0001 
#> 3     8     20.3 0001 
#> 4     4     20.1 0002 
#> 5     6     19.6 0002 
#> 6     8     20.3 0002

在我看来,操作“列表列”,然后使用
tidyr::unnest
函数可能会使您受益匪浅

在本例中,我使用
lappy
对列表列进行操作,但是如果您真的想要,您可以轻松地使用
purr::map

library(tidyverse)
library(modelr)

groupmean <- function(x) {
  x %>% 
    as.data.frame %>%
    group_by(cyl) %>%
    summarize(mpg_mean = mean(mpg), .groups = 'drop')
}

perm_means <- mtcars %>%
  permute(1000, mpg) %>%
  mutate(perm = lapply(perm, groupmean)) %>%
  unnest(perm)

perm_means %>% head
#> # A tibble: 6 x 3
#>     cyl mpg_mean .id  
#>   <dbl>    <dbl> <chr>
#> 1     4     17.5 0001 
#> 2     6     23.6 0001 
#> 3     8     20.3 0001 
#> 4     4     20.1 0002 
#> 5     6     19.6 0002 
#> 6     8     20.3 0002

是的,就是这样。谢谢你。是的,就是这样。谢谢你。