如何通过行名称按 R 中的矩阵列进行聚合?
为了按照行名称来聚合矩阵列,我们可以把 colSums 与 sapply 结合起来,再对输出进行转置。例如,如果我们有一个叫做 M 的矩阵,那么可以通过 t(sapply(by(M,rownames(M),colSums),identity)) 来按行名称聚合矩阵列。
示例 1
考虑下述矩阵 −
> M1<-matrix(rpois(40,2),ncol=2) > rownames(M1)<-sample(c("A","B","C","D"),20,replace=TRUE) > M1
输出
[,1] [,2] B 4 6 D 2 1 B 1 5 C 0 0 A 2 3 B 1 0 B 5 3 D 1 3 C 0 1 C 0 2 D 1 1 B 7 2 C 2 3 C 2 3 C 2 2 C 1 2 B 1 1 C 5 3 D 2 2 D 5 2
通过行名称查找 M1 的聚合 −
> t(sapply(by(M1,rownames(M1),colSums),identity))
输出
V1 V2 A 2 3 B 19 17 C 12 16 D 11 9
示例 2
> M2<-matrix(rpois(40,10),ncol=2) > rownames(M2)<-sample(c("S1","S2","S3"),20,replace=TRUE) > M2
输出
[,1] [,2] S1 6 10 S3 7 11 S3 13 6 S1 9 9 S2 11 9 S3 6 8 S1 4 5 S3 8 12 S2 14 8 S3 11 7 S1 15 12 S3 8 13 S3 9 10 S1 10 8 S2 14 18 S1 13 10 S1 10 4 S3 12 7 S2 5 9 S3 13 8
通过行名称查找 M2 的聚合 −
> t(sapply(by(M2,rownames(M2),colSums),identity))
输出
V1 V2 S1 67 58 S2 44 44 S3 87 82
广告