0

我想将值附加到 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 函数,但是跨多个子列表执行它似乎非常复杂。

4

2 回答 2

3
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 
于 2016-06-28T08:02:47.497 回答
1

我们可以用base R

un1 <- unlist(edges)
tapply(un1, sub(".*\\.", "", names(un1)), FUN = sum)
#  C  D  E 
# 20 13 12 
于 2016-06-28T08:36:04.173 回答