如何在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

以上是 如何在R中按行名汇总矩阵列? 的全部内容, 来源链接: utcz.com/z/313953.html

回到顶部