将函数应用于嵌套循环(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
这应该很简单,但我无法解决......
我想申请一个功能,例如。对每个较低的列表意味着, 例如。我要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