如何在不使用 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

以上是 如何在不使用 diag 函数的情况下提取 R 中矩阵的对角元素? 的全部内容, 来源链接: utcz.com/z/343724.html

回到顶部