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