在 R 中将单列矩阵转换为对角矩阵。

r programmingserver side programmingprogramming

对角矩阵是一种方阵,从左上到右下,非对角元素包含零。

要在 R 中将单列矩阵转换为对角矩阵,我们可以使用 diag 函数和矩阵函数,并使用 ncol 参数,其中我们可以将列数设置为等于单列矩阵中的值数。

查看下面给出的示例以了解如何完成。

示例 1

以下代码片段创建了一个示例矩阵 −

M1<-matrix(rpois(5,2),ncol=1)
M1

创建以下矩阵 −

   [,1]
[1,] 2
[2,] 3
[3,] 5
[4,] 1
[5,] 1

要将矩阵 M1 转换为上面创建的矩阵的对角矩阵,请将以下代码添加到上面的代码片段中 −

M1<-matrix(rpois(5,2),ncol=1)
M1<-matrix(diag(as.vector(M1)),ncol=5)
M1

输出

如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −

   [,1] [,2] [,3] [,4] [,5]
[1,] 2    0    0    0    0
[2,] 0    3    0    0    0
[3,] 0    0    5    0    0
[4,] 0    0    0    1    0
[5,] 0    0    0    0    1

示例 2

以下代码片段创建了一个示例矩阵 −

M2<-matrix(rpois(5,500),ncol=1)
M2

创建以下矩阵 −

    [,1]
[1,] 505
[2,] 505
[3,] 523
[4,] 545
[5,] 507

要将矩阵 M2 转换为上面创建的矩阵的对角矩阵,请将以下代码添加到上面的代码片段中 −

M2<-matrix(rpois(5,500),ncol=1)
M2<-matrix(diag(as.vector(M2)),ncol=5)
M2

输出

如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −

   [,1] [,2] [,3] [,4] [,5]
[1,] 505   0   0   0    0
[2,]   0 505   0   0    0
[3,]   0   0 523   0    0
[4,]   0   0   0 545    0
[5,]   0   0   0   0  507

示例 3

以下代码片段创建了一个示例矩阵 −

M3<-matrix(rnorm(5),ncol=1)
M3

创建以下矩阵 −

          [,1]
[1,]  0.2614596
[2,]  0.6914427
[3,] -1.8483160
[4,] -1.0057351
[5,] -1.4467553

要将矩阵 M3 转换为上面创建的矩阵的对角矩阵,请将以下代码添加到上面的代码片段中 −

M3<-matrix(rnorm(5),ncol=1)
M3<-matrix(diag(as.vector(M3)),ncol=5)
M3

输出

如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −

          [,1]      [,2]      [,3]    [,4]       [,5]
[1,] 0.2614596 0.0000000  0.000000  0.000000  0.000000
[2,] 0.0000000 0.6914427  0.000000  0.000000  0.000000
[3,] 0.0000000 0.0000000 -1.848316 0.000000   0.000000
[4,] 0.0000000 0.0000000  0.000000 -1.005735  0.000000
[5,] 0.0000000 0.0000000  0.000000  0.000000 -1.446755

示例 4

以下代码片段创建了一个示例矩阵 −

M4<-matrix(round(rnorm(5,25,3.2),1),ncol=1)
M4

创建以下矩阵 −

     [,1]
[1,] 26.6
[2,] 26.5
[3,] 22.1
[4,] 24.8
[5,] 19.1

要将矩阵 M4 转换为上面创建的矩阵的对角矩阵,请将以下代码添加到上面的代码片段中 −

M4<-matrix(round(rnorm(5,25,3.2),1),ncol=1)
M4<-matrix(diag(as.vector(M4)),ncol=5)
M4

输出

如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −

    [,1] [,2] [,3] [,4]   [,5]
[1,] 26.6 0.0  0.0  0.0    0.0
[2,] 0.0 26.5  0.0  0.0    0.0
[3,] 0.0  0.0 22.1  0.0    0.0
[4,] 0.0  0.0  0.0 24.8    0.0
[5,] 0.0  0.0  0.0  0.0   19.1

示例 5

以下代码片段创建了一个示例矩阵 −

M5<-matrix(round(runif(5,2,10),2),ncol=1)
M5

创建以下矩阵 −

     [,1]
[1,] 5.92
[2,] 7.34
[3,] 7.72
[4,] 3.18
[5,] 7.00

要将矩阵 M5 转换为上面创建的矩阵的对角矩阵,请将以下代码添加到上面的代码片段中 −

M5<-matrix(round(runif(5,2,10),2),ncol=1)
M5<-matrix(diag(as.vector(M5)),ncol=5)
M5

输出

如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −

     [,1] [,2] [,3] [,4] [,5]
[1,] 5.92 0.00 0.00 0.00  0
[2,] 0.00 7.34 0.00 0.00  0
[3,] 0.00 0.00 7.72 0.00  0
[4,] 0.00 0.00 0.00 3.18  0
[5,] 0.00 0.00 0.00 0.00  7

相关文章