因此,我试图在特定时间汇总每个列表中嵌套向量的值。向量被视为离散时间中个体的值。列表看起来像这样
groups <- 100
size <- 10
workspace <- list()
for (i in 1:groups) {
workspace[[i]] <- list()
for (j in 1:size) {
workspace[[i]][[j]] <- c(1,1,1)
}
}
在时间3,第i组中的人j的值达到
workspace[[i]][[j]][3]
这些组的大小为10,并且由于所有值均等于1,因此返回的总和应为10。
在时间3汇总组100的值的尝试失败,看起来像这样
sum(workspace[[100]][[]][3])
感谢您的帮助!
答案 0 :(得分:2)
这是一条快速的代码行,用于遍历每个组,从每个项目中提取第三个元素并将其汇总:
lapply(workspace, function(x) sum(sapply(x, "[", 3)))
[[1]]
[1] 10
[[2]]
[1] 10
[[3]]
[1] 10
[[4]]
[1] 10
...
或者,我们可以使用sapply
来获取向量的输出,向量的第n个元素对应于第n个组:
sapply(workspace, function(x) sum(sapply(x, "[", 3)))
[1] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
[35] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
[69] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
如果您只希望第100个组,我们可以将workspace[[100]]
直接传递到内部:
sum(sapply(workspace[[100]], "[", 3))
# [1] 10
希望您可以根据需要从这些示例中进行概括。
答案 1 :(得分:0)
您可以创建自己的函数,以适应对象的结构(列表列表)。
order