我想创建不同大小的身份矩阵,并且可以像这样较小规模地创建:
> x <- matrix(cbind(c(1,0), c(0,1)), 2)
> x
[,1] [,2]
[1,] 1 0
[2,] 0 1
就像这样:
> 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
但是,随着身份矩阵的大小增加,这似乎将变得越来越乏味。
有没有更简单的方法来创建n值身份矩阵?
最佳答案
当指定diag
或nrow
是长度为1的 vector 时,x
的一种(两种)用途
diag(5)
diag(nrow = 5)
或者您可以创建一个0的矩阵并填写对角线:
mat <- matrix(0, 5, 5)
diag(mat) <- 1
## or shorter:
`diag<-`(matrix(0, 5, 5), 1)
所有这些给我:
# [,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
关于r - 在R中创建身份矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27094402/