【问题标题】:Creating Identity Matrices in R在 R 中创建恒等矩阵
【发布时间】:2014-11-23 21:16:03
【问题描述】:

我想创建不同大小的单位矩阵,我可以像这样在更小的范围内这样做:

> 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(5) 是一个 5x5 单位矩阵
  • @rawr:谢谢,这是完美的。如果您将其放在下方,我很乐意将其标记为已接受的答案。

标签: r matrix


【解决方案1】:

当指定nrow 或当x 是长度为1 的向量时,diag 的一(二)种用途,你会得到一个单位矩阵

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

【讨论】:

    猜你喜欢
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多