基本上,我计算了矩阵每行的平均值
> 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
有没有办法在不手动填充每个单元格的情况下执行此操作?
答案 0 :(得分: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时,它会扩展你的向量以自动填充矩阵的其余部分。