如何通过行名称按 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

更新于: 06-Mar-2021

1K+ 浏览

开启你的 职业生涯

完成课程并获得认证

开始学习
广告