要按行名汇总矩阵列,我们可以将colSums与sapply一起使用并转置输出。例如,如果我们有一个名为M的矩阵,则可以使用t(sapply(by(M rownames(M),,colSums),identity))完成按行名称汇总的矩阵列。
考虑下面的矩阵-
> 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
> 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