R按行名称对行进行求和

use*_*169 1 r matrix

这似乎应该很容易,但我无法弄清楚.我想总结我的矩阵中具有相同名称的所有列.因此,在下面的示例中,我想最终得到另一个只有三列的矩阵.

set.seed(4)
z<-matrix(sample(1:10,20, replace=T), nrow=4)
colnames(z)<-c("a","c","b","a","b")
z
     a  c  b  a  b
[1,] 6  9 10  2 10
[2,] 1  3  1 10  6
[3,] 3  8  8  5 10
[4,] 3 10  3  5  8
Run Code Online (Sandbox Code Playgroud)

应该产量:

     a  c  b
[1,] 8  9 20
[2,] 11  3  7
[3,] 8  8  18
[4,] 8 10  11
Run Code Online (Sandbox Code Playgroud)

我试过了:

z<-aggregate(colnames(z), data=z, sum)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.如果可能的话,我更愿意使用基数R.

Psi*_*dom 7

您可以rowsum将列名称用作group变量:

t(rowsum(t(z), colnames(z)))

#      a  b  c
#[1,]  8 20  9
#[2,] 11  7  3
#[3,]  8 18  8
#[4,]  8 11 10
Run Code Online (Sandbox Code Playgroud)