2016-06-28 56 views
0

我想給R中的河流標籤附上值。這是我決定拆分爲第二個(令人困惑的)問題的一部分兩個問題第一個是:Sum each list of numerical values within a list總列表中屬於他們所屬類別的子列表

我有值列表的列表,這是需要顯示的節點之間流動,這樣的:

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函數,但是在幾個子列表中執行它似乎非常複雜。

回答

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 
1

我們可以使用base R

un1 <- unlist(edges) 
tapply(un1, sub(".*\\.", "", names(un1)), FUN = sum) 
# C D E 
# 20 13 12