2014-11-23 14 views
14

mi piacerebbe creare matrici di identità di diverse dimensioni, e sono in grado di farlo su scala più piccola in questo modo:Creazione di Identità matrici in R

> x <- matrix(cbind(c(1,0), c(0,1)), 2) 
> x 
    [,1] [,2] 
[1,] 1 0 
[2,] 0 1 

E in questo modo:

> 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 

Tuttavia, sembra che questo diventerà sempre più noioso con l'aumentare delle dimensioni delle matrici di identità.

enter image description here

C'è un modo più semplice per creare n matrici di identità -VALORE?

+10

'diag (5)' è una matrice di identità 5x5 – rawr

+0

@rawr: Grazie, è perfetto. Sono felice di contrassegnarlo come una risposta accettata se lo metti sotto. –

risposta

15

uno (due) degli usi per diag quando nrow è specificato o quando x è un vettore di lunghezza, si ottiene una matrice di identità

diag(5) 
diag(nrow = 5) 

o si potrebbe creare una matrice di 0 e compilare la diagonale:

mat <- matrix(0, 5, 5) 
diag(mat) <- 1 

## or shorter: 
`diag<-`(matrix(0, 5, 5), 1) 

Tutti questi mi danno:

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