假设我有一个嵌套的向量列表。
lst1 <- list(`A`=c(a=1,b=1), `B`=c(a=1), `C`=c(b=1), `D`=c(a=1,b=1,c=1))
lst2 <- list(`A`=c(b=1), `B`=c(a=1,b=1), `C`=c(a=1,c=1), `D`=c(a=1,c=1))
lstX <- list(lst1, lst2)
如图所示,每个向量 A,B,C,D
出现了两次, a,b,c
以不同的频率出现。
最有效的方法是如何压平列表,使得在嵌套列表中 A,B,C,D
上 a,b,c
进行求和或平均值。实际列表有数十万个嵌套列表。
#summed
a b c
A 1 2 NA
B 2 1 NA
C 1 1 1
D 2 1 2
#averaged
a b c
A 0.5 1 NA
B 1 0.5 NA
C 0.5 0.5 0.5
D 1 0.5 1
res <- do.call(rbind, strsplit(names(unlist(lstX)), "\\.")) ; table(res[, 1], factor(res[, 2]))
?或者是table(res[, 1], factor(res[, 2]))/2
? - David Arenburg