在R中创建单位矩阵
我想创建不同大小的标识矩阵,我可以在更小的范围内创建,如:在R中创建单位矩阵,r,matrix,R,Matrix,我想创建不同大小的标识矩阵,我可以在更小的范围内创建,如: > x <- matrix(cbind(c(1,0), c(0,1)), 2) > x [,1] [,2] [1,] 1 0 [2,] 0 1 >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
> x <- matrix(cbind(c(1,0), c(0,1)), 2)
> x
[,1] [,2]
[1,] 1 0
[2,] 0 1
>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
>y
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
然而,随着单位矩阵的增大,这似乎会变得越来越乏味
有没有更简单的方法来创建n值单位矩阵?当指定了nrow
或x
是长度为1的向量时,您可以得到单位矩阵
diag(5)
diag(nrow = 5)
或者,您可以创建一个0的矩阵并填充对角线:
mat <- matrix(0, 5, 5)
diag(mat) <- 1
## or shorter:
`diag<-`(matrix(0, 5, 5), 1)
diag(5)
是一个5x5标识matrix@rawr:谢谢,这太完美了。如果你把它放在下面,我很乐意把它标记为一个被接受的答案。
# [,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