汇总r中索引处的向量列表

时间:2019-01-30 17:26:44

标签: r nested-lists

因此,我试图在特定时间汇总每个列表中嵌套向量的值。向量被视为离散时间中个体的值。列表看起来像这样

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])

感谢您的帮助!

2 个答案:

答案 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