矩阵中的对角线元素是形成从右上侧到右下侧的直线的元素。例如,如果我们有一个如下所示的矩阵-
1 2 3 4 5 6 7 8 9
则对角线元素将为1、5、9,反对角线元素将为3、5、7。
要找到这些反对角元素的总和,我们可以使用apply函数。
M1<-matrix(1:9,ncol=3) M1
输出结果
[,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9
sum(diag(apply(M1,2,rev)))
输出结果
[1] 15
M2<-matrix(1:100,nrow=10) M2
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 1 11 21 31 41 51 61 71 81 91 [2,] 2 12 22 32 42 52 62 72 82 92 [3,] 3 13 23 33 43 53 63 73 83 93 [4,] 4 14 24 34 44 54 64 74 84 94 [5,] 5 15 25 35 45 55 65 75 85 95 [6,] 6 16 26 36 46 56 66 76 86 96 [7,] 7 17 27 37 47 57 67 77 87 97 [8,] 8 18 28 38 48 58 68 78 88 98 [9,] 9 19 29 39 49 59 69 79 89 99 [10,] 10 20 30 40 50 60 70 80 90 100
sum(diag(apply(M2,2,rev))))[1] 505
M3<-matrix(sample(0:9,36,replace=TRUE),nrow=6) M3
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 8 6 1 4 2 6 [2,] 3 5 7 5 6 7 [3,] 3 2 6 9 8 2 [4,] 3 2 5 9 4 6 [5,] 7 2 8 3 6 4 [6,] 6 0 2 5 6 6
sum(diag(apply(M3,2,rev)))[1] 34
M4<-matrix(sample(1:10,64,replace=TRUE),nrow=8) M4
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1, ] 6 1 2 1 3 1 7 7 [2,] 1 2 9 9 5 10 4 10 [3,] 4 2 5 4 5 8 8 10 [4,] 7 5 8 4 7 7 1 4 [5,] 10 9 1 5 6 8 2 5 [6,] 7 9 7 1 5 4 2 6 [7,] 4 9 4 5 8 9 2 9 [8,] 7 7 6 9 1 8 1 2
sum(diag(apply(M4,2,rev)))[1] 54
M5<-matrix(sample(1:100,81),nrow=9) M5
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] 32 34 99 73 93 65 82 50 9 [2,] 49 69 62 37 96 40 57 97 86 [3,] 11 84 22 53 87 12 95 88 100 [4,] 44 77 48 58 71 78 2 10 45 [5,] 39 66 72 23 24 20 55 59 35 [6,] 18 79 52 98 29 43 7 75 74 [7,] 80 15 70 91 13 60 61 1 38 [8,] 41 5 4 17 46 30 26 81 21 [9,] 54 51 6 25 47 89 36 85 67
sum(diag(apply(M5,2,rev)))[1] 530
M6<-matrix(sample(101:999,36),nrow=6) M6
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 726 139 975 492 672 686 [2,] 501 754 818 724 547 446 [3,] 204 480 530 112 872 761 [4,] 789 165 572 899 538 298 [5,] 987 119 274 369 936 132 [6,] 306 696 448 618 951 137
sum(diag(apply(M6,2,rev)))[1] 2342
M7<-matrix(rpois(49,5),nrow=7) M7
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 3 3 6 5 6 4 5 [2,] 1 9 7 4 2 5 4 [3,] 4 6 5 5 4 4 0 [4,] 6 5 5 4 5 10 1 [5,] 7 3 4 5 3 5 5 [6,] 4 4 5 2 5 2 5 [7,] 9 7 6 5 0 1 2
sum(diag(apply(M7,2,rev)))[1] 35
M8<-matrix(rpois(81,3),nrow=9) M8
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] 0 3 5 1 2 2 2 2 3 [2,] 2 2 0 4 3 5 3 5 5 [3,] 5 2 5 5 1 2 2 5 6 [4,] 4 4 5 3 3 3 2 1 5 [5,] 7 6 3 2 2 8 3 1 2 [6,] 5 2 3 1 5 3 1 2 1 [7,] 2 6 4 3 2 4 4 2 2 [8,] 1 3 3 3 2 1 3 1 0 [9,] 1 4 5 3 5 5 2 2 2
sum(diag(apply(M8,2,rev)))[1] 24