1. ホーム
  2. r

[解決済み] Rでアイデンティティ行列を作成する

2022-02-15 21:53:38

質問

異なるサイズのIDマトリクスを作りたいのですが、こんな風に小さいスケールでできるんですね。

> 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

しかし、ID行列のサイズが大きくなるにつれて、これはますます面倒になりそうです。

を簡単に作成する方法はありますか? n -の値を持つ ID 行列を作成できますか?

解き方は?

の用途のうち、1つ(2つ)は diag いつ 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)

これらすべてから

#      [,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