r - 在R中创建身份矩阵

标签 r matrix

我想创建不同大小的身份矩阵,并且可以像这样较小规模地创建:

> 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值身份矩阵?

最佳答案

当指定diagnrow是长度为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/

相关文章:

r - ggplot在分面时删除特定的x轴标签

r - 使用 API 下载数据时出现 "You must provide a hash."错误(在 R 中)

python - 填充numpy数组中的相邻元素

Java,矩阵溢出

r - 如何产生杠杆统计?

r - 将列堆叠为R中的1列

readr::read_csv问题:汉字变成乱码

python - 求和python中的矩阵列

c++ - 通过 MPI 传递 Armadillo C++ 矩阵

r - R 中的一个如何在矩阵上应用带有 "for"语句的 "if"函数来创建平滑函数