2014-11-23 4 views
14

Я хотел бы создать единичные матрицы разных размеров, и я в состоянии сделать это в меньшем масштабе, например, так:Создания единичных матриц в R

> 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 

Однако, похоже, это станет все более утомительным по мере увеличения размеров идентичных матриц.

enter image description here

Есть ли более простой способ создания п -Value единичных матриц?

+10

'diag (5)' - это идентификационная матрица 5x5 – rawr

+0

@rawr: Спасибо, это прекрасно. Я рад отметить это как принятый ответ, если вы положите его ниже. –

ответ

15

один (два) из применений diag когда nrow указан или когда x вектор длины одного, вы получаете единичную матрицу

diag(5) 
diag(nrow = 5) 

или вы можете создать матрицу 0s и заполнить диагональ:

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 
Смежные вопросы