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 に答える