在主列表中对它们所属类别的子列表中的项目求和
Sum items in sub-lists on categories they belong to, accross the main list
我想在 R 的河图中将值附加到标签。这是我的问题的第二个(令人困惑的)部分,我决定首先分成两个问题:
我有一个值列表列表,需要它来显示节点之间的流,如下所示:
edges <- list( A= list( C= 10, E= 5 ),
B= list( C= 10 ),
C=list(D = 13, E = 7 ))
问题:
如何在整个列表中实现子列表中项目的总和,如:
C 20
D 13
E 12
我想应该先将项目提取到数据框中,然后再进行汇总。或者有什么公式可以分解子列表,然后根据类别(C,D,E)对其中包含的项目求和。
我想知道如何使用 lapply sapply 函数,但跨多个子列表执行它似乎非常复杂。
library(data.table)
colSums(rbindlist(edges, fill=T), na.rm=T)
# C E D
#20 12 13
或者:
library(dplyr)
colSums(bind_rows(edges), na.rm=T)
# C E D
#20 12 13
我们可以使用base R
un1 <- unlist(edges)
tapply(un1, sub(".*\.", "", names(un1)), FUN = sum)
# C D E
# 20 13 12
我想在 R 的河图中将值附加到标签。这是我的问题的第二个(令人困惑的)部分,我决定首先分成两个问题:
我有一个值列表列表,需要它来显示节点之间的流,如下所示:
edges <- list( A= list( C= 10, E= 5 ),
B= list( C= 10 ),
C=list(D = 13, E = 7 ))
问题: 如何在整个列表中实现子列表中项目的总和,如:
C 20
D 13
E 12
我想应该先将项目提取到数据框中,然后再进行汇总。或者有什么公式可以分解子列表,然后根据类别(C,D,E)对其中包含的项目求和。
我想知道如何使用 lapply sapply 函数,但跨多个子列表执行它似乎非常复杂。
library(data.table)
colSums(rbindlist(edges, fill=T), na.rm=T)
# C E D
#20 12 13
或者:
library(dplyr)
colSums(bind_rows(edges), na.rm=T)
# C E D
#20 12 13
我们可以使用base R
un1 <- unlist(edges)
tapply(un1, sub(".*\.", "", names(un1)), FUN = sum)
# C D E
# 20 13 12