将函数应用于嵌套循环(purrr 包?)

Apply function to nested loop (purrr package?)

这应该很简单,但我无法解决......

我想申请一个功能,例如。对每个较低的列表意味着, 例如。我要return

$1

$1$a [1] value_of_mean 1

$1$b [1] value_of_mean 2

$2

$2$a [1] value_of_mean 3

$2$b [1] value_of_mean 4

我正在尝试使用 purrr 包

require(purrr)    
mylist <- list("1"=list(a=runif(10), b=runif(10)), "2"=list(a=runif(10), b=runif(10)))
        map(mylist, mean)

您可以调用 map 两次来完成此操作。这将遍历顶级列表中的每个列表,并对顶级列表的每个元素执行平均,即底层列表:

mylist %>% map(~ map(.x, mean))

给你这个:

$`1`
$`1`$a
[1] 0.5734347

$`1`$b
[1] 0.5321065


$`2`
$`2`$a
[1] 0.483521

$`2`$b
[1] 0.5138651

您不必使用 map 两次,因为引入 modify_depth 是为了整理双重 map 调用。

library(purrr)

set.seed(123)

mylist <- list("1"=list(a=runif(10), b=runif(10)), "2"=list(a=runif(10), b=runif(10)))

modify_depth(mylist, 2, mean)

导致:

> modify_depth(mylist, 2, mean)
$`1`
$`1`$a
[1] 0.5782475

$`1`$b
[1] 0.5233693


$`2`
$`2`$a
[1] 0.6155837

$`2`$b
[1] 0.537858

这与

相同
mylist %>% map(~ map(.x, mean))

导致:

> mylist %>% map(~ map(.x, mean))
$`1`
$`1`$a
[1] 0.5782475

$`1`$b
[1] 0.5233693


$`2`
$`2`$a
[1] 0.6155837

$`2`$b
[1] 0.537858