Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中创建单位矩阵_R_Matrix - Fatal编程技术网

在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