如何在 R 中不使用 diag 函式提取矩陣的對角線元素?
矩陣的對角線元素出現在列索引和行索引相同的的位置,因此,如果我們不想使用 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
要在 R 中不使用 diag 函式提取矩陣的對角線元素,請將以下程式碼新增到上述程式碼片段中:
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
要在 R 中不使用 diag 函式提取矩陣的對角線元素,請將以下程式碼新增到上述程式碼片段中:
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
要在 R 中不使用 diag 函式提取矩陣的對角線元素,請將以下程式碼新增到上述程式碼片段中:
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
要在 R 中不使用 diag 函式提取矩陣的對角線元素,請將以下程式碼新增到上述程式碼片段中:
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
要在 R 中不使用 diag 函式提取矩陣的對角線元素,請將以下程式碼新增到上述程式碼片段中:
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
要在 R 中不使用 diag 函式提取矩陣的對角線元素,請將以下程式碼新增到上述程式碼片段中:
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
要在 R 中不使用 diag 函式提取矩陣的對角線元素,請將以下程式碼新增到上述程式碼片段中:
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
要在 R 中不使用 diag 函式提取矩陣的對角線元素,請將以下程式碼新增到上述程式碼片段中:
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
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP