2012-12-07 23 views
7

Voglio creare una lista di 2D matriciCome creare un elenco di matrice R

> x 
    [,1] [,2] 
[1,] 1 6 
[2,] 2 7 
[3,] 3 8 
[4,] 4 9 
[5,] 5 10 

> y 
    [,1] [,2] 
[1,] 301 306 
[2,] 302 307 
[3,] 303 308 
[4,] 304 309 
[5,] 305 310 

> MATS<-c(x,y) 

> MATS[1] 
[1] 1 

Vorrei essere in grado di fare riferimento a MATS [1] come se si dove x ...

risposta

10

Prova

x <- matrix(1:10, ncol=2) 
y <- x+300 

MATS <- list(x, y) # use 'list' instead of 'c' to create a list of matrices 
MATS 
[[1]] 
    [,1] [,2] 
[1,] 1 6 
[2,] 2 7 
[3,] 3 8 
[4,] 4 9 
[5,] 5 10 

[[2]] 
    [,1] [,2] 
[1,] 301 306 
[2,] 302 307 
[3,] 303 308 
[4,] 304 309 
[5,] 305 310 

Qui bisogna fare riferimento a MATS[[1]] come se fosse x

Se si wan t per aggiungere una nuova matrice per la lista in uscita provare

z <- x+500 
MATS[[3]] <- z # appeding a new matrix to the existing list 
MATS 

[[1]] 
    [,1] [,2] 
[1,] 1 6 
[2,] 2 7 
[3,] 3 8 
[4,] 4 9 
[5,] 5 10 

[[2]] 
    [,1] [,2] 
[1,] 301 306 
[2,] 302 307 
[3,] 303 308 
[4,] 304 309 
[5,] 305 310 

[[3]] 
    [,1] [,2] 
[1,] 501 506 
[2,] 502 507 
[3,] 503 508 
[4,] 504 509 
[5,] 505 510 

Uno svantaggio di questo approccio è che si deve conoscere la posizione nella lista in cui si deve aggiungere la nuova matrice, se non lo sai o semplicemente se non vuoi questo approccio, allora ecco un trucco:

unlist(list(MATS, list(z)), recursive=FALSE) # will give u the same list :D 
+1

@jiber Grazie. E se voglio aggiungere un'altra matrice da elencare? Quale sarebbe la sintassi per favore? Lo faccio in un ciclo. – ManInMoon

+0

Perfetto grazie – ManInMoon

+0

@Jilber grazie. Che ne dici di leggere in una cosa del genere da un file di testo o csv? – metaforge

Problemi correlati