0

基本上,我计算了矩阵每一行的平均值

> mat <- matrix(c(45,34,1,3,4325,23,1,2,5,7,3,4,32,734,2),ncol=3)
> mat
     [,1] [,2] [,3]
[1,]   45   23    3
[2,]   34    1    4
[3,]    1    2   32
[4,]    3    5  734
[5,] 4325    7    2

> mat2 <-t(rowMeans(mat))
> mat2
         [,1] [,2]     [,3]     [,4]     [,5]
[1,] 23.66667   13 11.66667 247.3333 1444.667
> dim(mat2)
[1] 1 5

我想做的是用计算值填充一个空矩阵,使其看起来像'mat3'

> mat2 <- matrix(numeric(0), 5,5)
> mat2
     [,1] [,2] [,3] [,4] [,5]
[1,]   NA   NA   NA   NA   NA
[2,]   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA


> mat3
           [,1]     [,2]         [,5] 
[1,]   23.66667 23.66667  ....   23.66667 
[2,]   13.00000 13.00000  ....   13.00000 
[3,]   11.66667 11.66667  ....   11.66667
[4,]   247.3333 247.3333  ....   247.3333
[5,]   1444.667 1444.667  ....   1444.667

有没有办法在不手动填充每个单元格的情况下做到这一点?

4

1 回答 1

2

是的,通过 R 的回收功能:

mat <- matrix(c(45,34,1,3,4325,23,1,2,5,7,3,4,32,734,2),ncol=3)
mat2 <- rowMeans(mat)
mat2
[1]   23.66667   13.00000   11.66667  247.33333 1444.66667
> matrix(mat2,5,5)

           [,1]       [,2]       [,3]       [,4]       [,5]
[1,]   23.66667   23.66667   23.66667   23.66667   23.66667
[2,]   13.00000   13.00000   13.00000   13.00000   13.00000
[3,]   11.66667   11.66667   11.66667   11.66667   11.66667
[4,]  247.33333  247.33333  247.33333  247.33333  247.33333
[5,] 1444.66667 1444.66667 1444.66667 1444.66667 1444.66667

当您给出matrix一个长度为 5 的向量并告诉它生成的矩阵应该是 5x5 时,它会扩展您的向量以自动填充矩阵的其余部分。

于 2012-10-30T15:04:46.493 回答