这应该很简单,但我无法解决这个问题......
我想申请一个功能,例如。对每个较低的列表意味着什么, 例如。我想回来
$
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)
答案 0 :(得分:2)
您可以拨打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
答案 1 :(得分:1)
您不必使用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