如何在R中将矩阵的对角元素设置为1?

首先我们需要了解的是,对角元素仅在具有方矩阵的情况下才有用,否则设置对角元素将毫无意义,这几乎是所有数学家都知道的,但是有些新生可能会感到困惑,因为我们可以在对角元素中创建对角元素。非正方形矩阵,不应称为对角线。在R中,我们可以使用diag函数将矩阵的对角元素设置为1。

例1

> M1<-matrix(1:25,ncol=5)
> M1

输出结果

     [,1] [,2] [,3] [,4] [,5]
[1,]   1    6   11   16   21
[2,]   2    7   12   17   22
[3,]   3    8   13   18   23
[4,]   4    9   14   19   24
[5,]   5   10   15   20   25
> diag(M1)<-1
> M1

输出结果

   [,1] [,2] [,3] [,4] [,5]
[1,] 1    6   11   16   21
[2,] 2    1   12   17   22
[3,] 3    8    1   18   23
[4,] 4    9   14    1   24
[5,] 5   10   15   20    1

例2

> M2<-matrix(rpois(36,5),ncol=6)
> M2

输出结果

   [,1] [,2] [,3] [,4] [,5] [,6]
[1,] 5    4    4    5    6    5
[2,] 4    5    7    8    3    4
[3,] 4    3    6    5    5    6
[4,] 7    4    4    6    2    6
[5,] 2    5    2    4    6    6
[6,] 7    2    3    5    4    3
> diag(M2)<-1
> M2

输出结果

   [,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1    4    4    5    6    5
[2,] 4    1    7    8    3    4
[3,] 4    3    1    5    5    6
[4,] 7    4    4    1    2    6
[5,] 2    5    2    4    1    6
[6,] 7    2    3    5    4    1

例子3

> M3<-matrix(rpois(64,10),ncol=8)
> M3

输出结果

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 8 9 17 7 12 11 4 10
[2,] 8 15 8 7 13 10 13 11
[3,] 13 9 9 13 4 10 11 9
[4,] 9 9 7 10 5 13 11 5
[5,] 7 9 9 8 9 11 8 15
[6,] 12 8 10 14 15 3 4 8
[7,] 9 8 7 11 11 11 10 6
[8,] 7 12 6 11 10 6 9 7
> diag(M3)<-1
> M3

输出结果

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 9 17 7 12 11 4 10
[2,] 8 1 8 7 13 10 13 11
[3,] 13 9 1 13 4 10 11 9
[4,] 9 9 7 1 5 13 11 5
[5,] 7 9 9 8 1 11 8 15
[6,] 12 8 10 14 15 1 4 8
[7,] 9 8 7 11 11 11 1 6
[8,] 7 12 6 11 10 6 9 1

例子4

> M4<-matrix(sample(1:10,100,replace=TRUE),ncol=10)
> M4

输出结果

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 4 8 8 1 8 6 1 4 10 7
[2,] 4 8 3 4 8 5 10 3 10 9
[3,] 8 2 1 7 4 7 7 9 3 5
[4,] 6 2 9 2 10 2 2 2 6 4
[5,] 6 9 4 8 2 1 8 4 7 7
[6,] 2 9 7 9 1 6 10 8 7 9
[7,] 3 6 2 7 5 2 7 3 1 5
[8,] 1 6 6 10 2 7 6 2 1 9
[9,] 1 1 6 3 10 1 4 4 9 3
[10,] 7 10 3 7 10 10 4 10 1 9
> diag(M4)<-1
> M4

输出结果

    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]  1    8    8    1    8    6    1    4   10     7
[2,]  4    1    3    4    8    5   10    3   10     9
[3,]  8    2    1    7    4    7    7    9    3     5
[4,]  6    2    9    1   10    2    2    2    6     4  
[5,]  6    9    4    8    1    1    8    4    7     7
[6,]  2    9    7    9    1    1   10    8    7     9
[7,]  3    6    2    7    5    2    1    3    1     5
[8,]  1    6    6   10    2    7    6    1    1     9
[9,]  1    1    6    3   10    1    4    4    1     3
[10,] 7   10    3    7   10   10    4   10    1     1

范例5

> M5<-matrix(sample(0:9,25,replace=TRUE),ncol=5)
> M5

输出结果

   [,1] [,2] [,3] [,4] [,5]
[1,] 6    6    9    9    0
[2,] 2    4    3    9    7
[3,] 1    7    8    3    8
[4,] 9    5    0    4    6
[5,] 9    7    0    1    3
> diag(M5)<-1
> M5

输出结果

   [,1] [,2] [,3] [,4] [,5]
[1,] 1    6    9    9    0
[2,] 2    1    3    9    7
[3,] 1    7    1    3    8
[4,] 9    5    0    1    6
[5,] 9    7    0    1    1