首页 > 解决方案 > 在 R 中处理嵌套列表

问题描述

我有一个具有以下结构的嵌套列表:在此处输入图像描述

每个$mu都是 15 个数字的向量。如何计算 1000 中 15 个元素中每个元素的平均值$mu

我知道我可以访问$mu's with hb.post.PT1$compdraw[[1]]$mu,但是如何提取或循环它们以执行函数?

我一直在尝试这样的事情但没有成功:

lapply(hb.post.PT1$compdraw, function(x) lapply(hb.post.PT1$compdraw[[x]]$mu, function(x) mean))

抱歉,我无法发布示例列表数据。

标签: rlistnested

解决方案


您已经使用第一个循环遍历每个列表元素lapply。因此,根据您的结构,循环的每次迭代都将是 2 个元素(murooti)的列表。所以你只需要一个lapply

ll <- list(list(mu = runif(15), root = runif(10)), list(mu = runif(15), runif(10)))

str(ll)
#List of 2
# $ :List of 2
#  ..$ mu  : num [1:15] 0.314 0.614 0.228 0.594 0.447 ...
#  ..$ root: num [1:10] 0.73 0.496 0.266 0.599 0.917 ...
# $ :List of 2
#  ..$ mu: num [1:15] 0.134 0.244 0.507 0.771 0.934 ...
#  ..$   : num [1:10] 0.818 0.138 0.83 0.509 0.914 ...

lapply(ll, function(x) mean(x$mu))
#[[1]]
#[1] 0.4264001
#
#[[2]]
#[1] 0.4526724

推荐阅读