汇总 r 中索引处的向量列表列表
Summarise list of lists of vectors at a index in r
所以我试图在某个时间总结每个列表中嵌套向量的值。这些向量被视为离散时间中个体的值。列表如下所示
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)
}
}
组 i 中的人 j 在时间 3 的值是通过
获得的
workspace[[i]][[j]][3]
组的大小为 10,由于所有值都等于 1,因此返回的总和应为 10。
在时间 3 总结第 100 组值的不成功尝试看起来像这样
sum(workspace[[100]][[]][3])
感谢任何帮助!
您可以创建自己的函数,它适应您的对象的结构(列表的列表)。
own_sum <- function(myobject, group, time){
mylist <- myobject[[group]]
result <- 0
for(i in 1:length(mylist)){
result <- result + mylist[[i]][[time]]
}
return(result)
}
own_sum(biglist = workspace, group = 100, time = 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组,我们可以直接传workspace[[100]]
到里面:
sum(sapply(workspace[[100]], "[", 3))
# [1] 10
希望您可以从这些示例中概括出您需要的任何内容。
所以我试图在某个时间总结每个列表中嵌套向量的值。这些向量被视为离散时间中个体的值。列表如下所示
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)
}
}
组 i 中的人 j 在时间 3 的值是通过
获得的workspace[[i]][[j]][3]
组的大小为 10,由于所有值都等于 1,因此返回的总和应为 10。
在时间 3 总结第 100 组值的不成功尝试看起来像这样
sum(workspace[[100]][[]][3])
感谢任何帮助!
您可以创建自己的函数,它适应您的对象的结构(列表的列表)。
own_sum <- function(myobject, group, time){
mylist <- myobject[[group]]
result <- 0
for(i in 1:length(mylist)){
result <- result + mylist[[i]][[time]]
}
return(result)
}
own_sum(biglist = workspace, group = 100, time = 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组,我们可以直接传workspace[[100]]
到里面:
sum(sapply(workspace[[100]], "[", 3))
# [1] 10
希望您可以从这些示例中概括出您需要的任何内容。