如何在不使用 diag 函数的情况下提取 R 中矩阵的对角元素?

矩阵的对角元素出现在列和行索引相同的位置,因此,如果我们不想使用 diag 函数,我们可以利用这些索引来提取矩阵的对角元素。

例如,如果我们有一个名为 M 的矩阵,则可以使用下面给出的命令提取 M 的对角元素 -

M[row(M)==col(M)]

查看以下示例以了解其工作原理。

示例 1

以下代码段创建了一个矩阵 -

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

创建以下矩阵 -

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

要在不使用 diag 函数的情况下提取 R 中矩阵的对角元素,请将以下代码添加到上述代码段中 -

M1<-matrix(rpois(25,1),ncol=5)
M1[row(M1)==col(M1)]
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 0 0 0 1 1

示例 2

以下代码段创建了一个矩阵 -

M2<-matrix(rpois(25,2),ncol=5)
M2

创建以下矩阵 -

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

要在不使用 diag 函数的情况下提取 R 中矩阵的对角元素,请将以下代码添加到上述代码段中 -

M2<-matrix(rpois(25,2),ncol=5)
M2[row(M2)==col(M2)]
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 2 4 1 2 0

示例 3

以下代码段创建了一个矩阵 -

M3<-matrix(rpois(25,10),ncol=5)
M3

创建以下矩阵 -

   [,1][,2][,3][,4][,5]
[1,]  7 10 13   8   3
[2,]  5  9  9   8   7
[3,] 12  7 15   6   9
[4,] 15  8 10  11  16
[5,]  8 10 16  10   7

要在不使用 diag 函数的情况下提取 R 中矩阵的对角元素,请将以下代码添加到上述代码段中 -

M3<-matrix(rpois(25,10),ncol=5)
M3[row(M3)==col(M3)]
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 7 9 15 11 7

示例 4

以下代码段创建了一个矩阵 -

M4<-matrix(rpois(25,50),ncol=5)
M4

创建以下矩阵 -

   [,1][,2][,3][,4][,5]
[1,] 48 40  42  44  53
[2,] 46 47  56  43  41
[3,] 47 54  53  40  50
[4,] 39 50  53  55  48
[5,] 57 57  43  57  64

要在不使用 diag 函数的情况下提取 R 中矩阵的对角元素,请将以下代码添加到上述代码段中 -

M4<-matrix(rpois(25,50),ncol=5)
M4[row(M4)==col(M4)]
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 48 47 53 55 64

例 5

以下代码段创建了一个矩阵 -

M5<-matrix(rpois(25,500),ncol=5)
M5

创建以下矩阵 -

    [,1][,2][,3][,4][,5]
[1,] 501 506 543 506 518
[2,] 466 531 530 496 505
[3,] 510 497 516 522 505
[4,] 455 521 504 476 493
[5,] 465 520 490 501 476

要在不使用 diag 函数的情况下提取 R 中矩阵的对角元素,请将以下代码添加到上述代码段中 -

M5<-matrix(rpois(25,500),ncol=5)
M5[row(M5)==col(M5)]
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 501 531 516 476 476

例 6

以下代码段创建了一个矩阵 -

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

创建以下矩阵 -

    [,1]  [,2] [,3] [,4] [,5]
[1,] -2.1  1.0  0.3  1.4 -1.2
[2,] -0.1  0.1 -0.2 -1.1  0.7
[3,] -1.6 -0.6 -0.2  1.5 -1.0
[4,] -0.7  1.2 -1.5 -0.9  0.1
[5,]  1.2  0.5  1.8 -0.6  0.4

要在不使用 diag 函数的情况下提取 R 中矩阵的对角元素,请将以下代码添加到上述代码段中 -

M6<-matrix(round(rnorm(25),1),ncol=5)
M6[row(M6)==col(M6)]
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] -2.1 0.1 -0.2 -0.9 0.4

例 7

以下代码段创建了一个矩阵 -

M7<-matrix(round(runif(25,2,5),2),ncol=5)
M7

创建以下矩阵 -

     [,1] [,2] [,3] [,4] [,5]
[1,] 4.63 3.45 2.22 4.31 3.46
[2,] 2.22 3.65 3.15 4.19 2.65
[3,] 3.14 3.68 2.31 3.04 3.45
[4,] 3.71 4.91 3.94 2.55 2.98
[5,] 3.48 2.54 2.29 3.58 3.15

要在不使用 diag 函数的情况下提取 R 中矩阵的对角元素,请将以下代码添加到上述代码段中 -

M7<-matrix(round(runif(25,2,5),2),ncol=5)
M7[row(M7)==col(M7)]
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 4.63 3.65 2.31 2.55 3.15

例 8

以下代码段创建了一个矩阵 -

M8<-matrix(round(rexp(25,2.05),2),ncol=5)
M8

创建以下矩阵 -

     [,1] [,2] [,3] [,4] [,5]
[1,] 0.60 0.15 0.32 0.42 0.16
[2,] 0.59 0.40 0.95 0.23 1.07
[3,] 0.02 0.57 0.79 0.21 0.09
[4,] 1.03 0.25 0.25 1.08 0.46
[5,] 0.10 0.68 0.13 0.47 0.01

要在不使用 diag 函数的情况下提取 R 中矩阵的对角元素,请将以下代码添加到上述代码段中 -

M8<-matrix(round(rexp(25,2.05),2),ncol=5)
M8[row(M8)==col(M8)]
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 0.60 0.40 0.79 1.08 0.01

猜你喜欢