2012-12-07 27 views
7

Chcę utworzyć listę 2D macierzyJak utworzyć listę matrycy w 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 

Chciałbym, aby móc odnieść do maty [1] tak, jakby gdzie x ...

Odpowiedz

10

Spróbuj

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 

Tu trzeba odwołać się do MATS[[1]] jakby to było x

Jeśli wan t dołączyć nowa matryca do listy opuszczającego spróbować

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 

Wadą tego podejścia jest to, że trzeba wiedzieć, pozycję na liście, gdzie trzeba dołączyć nową matrycę, jeśli nie znamy lub po prostu, jeśli nie chcesz tego podejścia, oto sztuczka:

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

@jiber Dziękuję. A jeśli chcę dołączyć kolejną macierz do listy? Jaka byłaby składnia? Robię to w pętli. – ManInMoon

+0

Idealne dzięki – ManInMoon

+0

@Jilber dzięki. Co powiesz na czytanie w takiej rzeczy z pliku tekstowego lub csv? – metaforge