R语言三层嵌套列表使用lapply计算Growth字段均值问题
解决方案
你需要嵌套两层apply函数,分别遍历一、二级列表元素,再提取Growth字段计算均值即可:
1. 保留原列表结构返回均值结果
# 返回和ou1结构完全匹配的列表,每个位置存储对应Growth字段的均值 growth_mean <- lapply(ou1, function(level1_item) { sapply(level1_item, function(level2_item) { # 加na.rm = TRUE可自动忽略缺失值,无缺失值可删除该参数 mean(level2_item$Growth, na.rm = TRUE) }) })
如果不需要自动将二级结果转为向量,把内层的sapply替换为lapply即可。
2. 转为数据框方便后续处理
如果需要将结果整理为结构化表格,可以追加以下代码:
# 列对应ou1的一级索引,行对应二级元素的名称 growth_mean_df <- do.call(cbind, growth_mean)
原代码问题说明
lapply(ou1, sapply, mean)没有指定提取Growth字段,会直接对二级子列表整体计算均值,运行报错或返回无意义结果lapply(ou1[[1]]$1$Growth, sapply, mean)仅针对单个Growth向量的元素逐一求均值,未实现多层列表遍历逻辑
内容的提问来源于stack exchange,提问作者Selina1
相关产品推荐
相关产品推荐

