【发布时间】:2018-06-18 17:49:57
【问题描述】:
我有一个存储测量值的大列表(其他 lapply() 运行的产品)。我现在想收集这些测量值并计算中位数/平均值/标准差等,但我不知道如何访问它们。这个列表的结构是这样的:
foo[[i]][[j]][[k]][[1]]
foo[[i]][[j]][[k]][[2]]$bar
我想不出一个会返回的函数,例如$bar 的平均值(但不是 $x 的平均值)并保持索引 i、j、k 的值的关系。
可以使用以下 R 代码生成示例列表:
library(purrr)
metrics <- function(y){
tt10r <- median(y)
list(y, flatten(list(bar = tt10r)))
}
example_list <- list()
for (i in 1:10)
{
v <- list()
for (j in 1:10)
{
w <- 1:10
v[j] <- list(w)
}
example_list[[i]] <- v
}
foo <- list()
for (i in 1:length(example_list))
{
u <- list()
values <- list()
for (j in 1:length(example_list[[i]]))
{
u[[j]] <- lapply(example_list[[i]][[j]], function(x) mean(x))
values[[j]] <- lapply(u[[j]], function(x) metrics(x))
}
foo[[i]] <- values
}
【问题讨论】:
-
您能否提供一个可以证明此问题的列表的小样本?
-
寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。
-
我添加了一些代码来生成这样的列表。我的原始数据是 4GB,因此有点太大而无法呈现。
-
所需的输出将是一个数据框,其中包含 i、j、k 的列以及每个 i 和 j 组合的所有 k 的平均值。