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

总结r中索引处的向量列表,r,nested-lists,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) } } sum(workspace[[100]][[]][3])

所以我试图总结每个列表中特定时间的嵌套向量的值。向量被视为离散时间内个体的值。列表如下所示

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)
  }
}
sum(workspace[[100]][[]][3])
这些组的大小为10,由于所有值都等于1,因此返回的总和应为10

在时间3总结组100的值的尝试失败,结果如下所示

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)
  }
}
sum(workspace[[100]][[]][3])

感谢您的帮助

您可以创建自己的函数,该函数适应对象的结构(列表列表)


own\u sum您可以创建自己的函数,该函数适合对象的结构(列表列表)


own_sum这里有一个快速行,可以循环每个组,从每个项目中提取第三个元素,并将其汇总:

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组,我们可以将
工作区[[100]]
直接传递到内部:

sum(sapply(workspace[[100]], "[", 3))
# [1] 10

希望你能从这些例子中归纳出你需要的任何东西。

这里有一条快速的线来循环每个组,从每个项目中提取第三个元素并总结:

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组,我们可以将
工作区[[100]]
直接传递到内部:

sum(sapply(workspace[[100]], "[", 3))
# [1] 10

希望你可以从这些例子中归纳出你需要的任何东西。

你会考虑把嵌套列表转换成<代码>数据帧< /代码>吗?使用这种结构进行这种类型的计算要容易得多。这使得事情变得简单多了,谢谢。你会考虑把嵌套列表转换成<代码>数据帧<代码>吗?用这种结构进行这种计算会简单得多。这使事情变得容易得多,谢谢