将函数应用于嵌套循环(purrr 包?) [英] Apply function to nested loop (purrr package?)

查看:65
本文介绍了将函数应用于嵌套循环(purrr 包?)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

This should be simple, but I can't work it out ...

我想应用一个函数,例如.意味着每个较低的列表,例如.我要回来

I want to apply a function, eg. mean to each of the lower lists, eg. I want to return

$1

$1$a [1] value_of_mean 1

$1$a [1] value_of_mean 1

$1$b [1] value_of_mean 2

$1$b [1] value_of_mean 2

$2

$2$a [1] value_of_mean 3

$2$a [1] value_of_mean 3

$2$b [1] value_of_mean 4

$2$b [1] value_of_mean 4

我正在尝试使用 purrr 包

I am trying to use the purrr package

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

推荐答案

您不必使用 map 两次,因为引入了 modify_depth 来整理两次 map 调用.

You don't have to use map twice, as modify_depth was introduced to tidy-up the double map call.

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

这篇关于将函数应用于嵌套循环(purrr 包?)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆