如何在R语言中计算方阵元素的平均值,同时排除对角线元素?
有很多方法可以计算排除对角线元素的矩阵元素的平均值,这个平均值实际上是下三角矩阵和上三角矩阵的平均值。我们可以通过创建下三角矩阵和上三角矩阵的向量来简单地使用平均值函数,如下例所示。
示例1
> M1<-matrix(rpois(20,5),nrow=5) > M1
输出
[,1] [,2] [,3] [,4] [1,] 1 6 3 6 [2,] 8 5 3 4 [3,] 5 4 4 6 [4,] 5 5 3 4 [5,] 4 8 1 3
示例
> mean(c(M1[upper.tri(M1)],M1[lower.tri(M1)]))
输出
[1] 4.625
示例2
> M2<-matrix(rpois(100,5),ncol=10) > M2
输出
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 3 7 2 4 10 9 4 7 3 2 [2,] 3 4 5 5 7 4 7 2 5 5 [3,] 3 2 3 12 5 2 3 4 6 4 [4,] 2 4 6 1 7 4 8 10 8 0 [5,] 6 4 4 4 7 4 7 4 5 7 [6,] 5 8 6 5 9 7 5 4 4 1 [7,] 5 3 5 3 6 1 1 9 6 1 [8,] 7 4 5 1 6 5 2 6 5 5 [9,] 4 7 6 8 4 4 7 5 1 6 [10,] 1 9 4 4 1 2 2 5 5 4
示例
> mean(c(M2[upper.tri(M2)],M2[lower.tri(M2)]))
输出
[1] 4.844444
示例3
> M3<-matrix(rnorm(36,6,2.1),nrow=6) > M3
输出
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 11.102747 3.667257 2.674908 1.685490 7.297186 3.675492 [2,] 5.514661 7.012920 5.452867 5.890710 3.347643 4.944706 [3,] 5.842299 5.090597 5.764840 5.274849 7.210516 6.025230 [4,] 4.848784 6.171407 5.374152 10.452946 5.642747 8.886984 [5,] 9.387442 9.055521 8.677278 5.539050 5.648067 6.655354 [6,] 8.664883 5.976989 3.664106 5.527728 6.268774 8.135999
示例
> mean(c(M3[upper.tri(M3)],M3[lower.tri(M3)]))
输出
[1] 5.797854
示例4
> M4<-matrix(sample(11:20,64,replace=TRUE),nrow=8) > M4
输出
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 18 12 18 16 19 15 17 15 [2,] 11 11 20 18 13 19 13 15 [3,] 12 14 17 17 19 12 11 13 [4,] 18 14 14 19 16 19 11 11 [5,] 11 19 15 19 12 20 17 17 [6,] 18 19 15 12 14 15 20 19 [7,] 20 16 16 19 18 20 14 11 [8,] 12 20 13 19 20 19 11 16
示例
> mean(c(M4[upper.tri(M4)],M4[lower.tri(M4)]))
输出
[1] 15.91071
示例5
> M5<-matrix(runif(36,2,10),ncol=6) > M5
输出
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 5.315719 7.590613 2.964828 2.510046 8.887437 3.377134 [2,] 3.393052 3.308531 5.938284 9.757756 7.803694 7.147399 [3,] 7.140688 7.942123 9.287733 6.907886 4.403413 2.938388 [4,] 3.171102 6.164160 4.408718 6.946996 5.626955 9.479825 [5,] 6.982951 8.210883 3.677973 9.643256 6.250810 6.695614 [6,] 7.575222 9.967751 6.816987 3.348135 7.717623 6.192853
示例
> mean(c(M5[upper.tri(M5)],M5[lower.tri(M5)]))
输出
[1] 6.272997
示例6
> M6<-matrix(sample(501:999,64),nrow=8) > M6
输出
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 990 725 549 896 867 619 764 682 [2,] 602 593 579 829 538 964 939 864 [3,] 889 878 851 911 886 834 693 730 [4,] 736 969 603 545 849 936 515 532 [5,] 982 856 771 925 877 972 647 570 [6,] 890 655 961 883 504 843 950 537 [7,] 766 726 628 870 899 585 687 536 [8,] 853 633 560 729 887 680 527 629
示例
> mean(c(M6[upper.tri(M6)],M6[lower.tri(M6)]))
输出
[1] 756.4286
广告