列表的深嵌套元素的R-lappy
我有一个存储度量值的大列表(其他lappy()运行的产物)。我现在想收集这些测量值并计算中位数/平均数/标准差等,但我不知道如何访问它们。此列表的结构如下所示:列表的深嵌套元素的R-lappy,r,list,lapply,R,List,Lapply,我有一个存储度量值的大列表(其他lappy()运行的产物)。我现在想收集这些测量值并计算中位数/平均数/标准差等,但我不知道如何访问它们。此列表的结构如下所示: foo[[i]][[j]][[k]][[1]] foo[[i]][[j]][[k]][[2]]$bar 我想不出一个函数会返回例如$bar(但不是$x)的平均值,并保持指数I、j、k的值之间的关系 可以使用以下R代码生成示例列表: library(purrr) metrics <- function(y){ tt10r &l
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
}
库(purrr)
metrics以下代码运行良好,但我不确定它是否有效(循环!)。给出了预期结果:
final <- matrix(nrow = tail(cumsum(unlist(lapply(foo, function(x) lengths(x) -2))), n=1), ncol = 3)
final <- data.frame(final)
j=1
i=1
all_js <- c(0, cumsum(lengths(foo)))
starts <- c(0, cumsum(unlist(lapply(foo, function(x) lengths(x) -2)))) + 1
ends <- c(0, cumsum(unlist(lapply(foo, function(x) lengths(x) -2))))
for (i in 1:length(foo))
{
a <- foo[[i]]
for (j in 1:length(a))
{
b <- a[[j]]
data <- unlist(lapply(lapply(b[1], '[', 2), '[[', 1))
for (k in 2:c(length(b)-2))
{
data <- rbind(data,unlist(lapply(lapply(b[k], '[', 2), '[[', 1)))
}
row.names(data) <- NULL
colnames(final) <- c("i", "j", colnames(data))
first <- starts[all_js[i] + j]
last <- ends[all_js[i] + j+1]
final[first:last,] <- data.frame(cbind(i = i, j = j, data))
}
}
final你能提供一个列表的小样本来演示这个问题吗?在寻求帮助时,你应该包括一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案。我添加了一些代码来生成这样一个列表。我的原始数据是4GB,因此有点太大,无法显示。所需的输出将是一个数据帧,其中包含i、j、k列以及i和j组合中所有k的平均值。