在R中创建身份矩阵

19 r matrix

我想创建不同大小的标识矩阵,我能够在更小的范围内这样做:

> x <- matrix(cbind(c(1,0), c(0,1)), 2)
> x
     [,1] [,2]
[1,]    1    0
[2,]    0    1
Run Code Online (Sandbox Code Playgroud)

就像这样:

> y <- matrix(cbind(c(1,0,0), c(0,1,0), c(0,0,1)), 3)
> y
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1
Run Code Online (Sandbox Code Playgroud)

然而,随着身份矩阵规模的扩大,这似乎会变得越来越乏味.

在此输入图像描述

有没有更简单的方法来创建n值身份矩阵?

raw*_*awr 22

diag如果nrow指定了when的一个(两个)用法,或者什么x是长度为1的向量,则得到一个单位矩阵

diag(5)
diag(nrow = 5)
Run Code Online (Sandbox Code Playgroud)

或者你可以创建一个0的矩阵并填写对角线:

mat <- matrix(0, 5, 5)
diag(mat) <- 1

## or shorter:
`diag<-`(matrix(0, 5, 5), 1)
Run Code Online (Sandbox Code Playgroud)

所有这些都给了我:

#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    0    0    0    0
# [2,]    0    1    0    0    0
# [3,]    0    0    1    0    0
# [4,]    0    0    0    1    0
# [5,]    0    0    0    0    1
Run Code Online (Sandbox Code Playgroud)