2015-05-21 7 views
6

Nota: questa non è una domanda di grafico.Converti da matrice n x m a matrice lunga in R

devo una matrice nxm:

> m = matrix(1:6,2,3) 
> m 
    a b c 
d 1 2 3 
e 4 5 6 

vorrei convertire questo in una lunga matrice:

> m.l 
a d 1 
a e 4 
b d 2 
b e 5 
c d 3 
c e 6 

Ovviamente annidati per i loop avrebbe funzionato, ma so che ci sono un sacco di bella strumenti per rimodellare le matrici in R. Finora, ho trovato solo letteratura sulla conversione da matrici lunghe o larghe a una matrice nxm e non viceversa. Mi manca qualcosa di ovvio? Come posso fare questa conversione?

Grazie!

risposta

7

Se avete bisogno di un'unica matrice colonna

matrix(m, dimnames=list(t(outer(colnames(m), rownames(m), FUN=paste)), NULL)) 
# [,1] 
#a d 1 
#a e 4 
#b d 2 
#b e 5 
#c d 3 
#c e 6 

Per un'uscita data.frame, è possibile utilizzare melt da reshape2

library(reshape2) 
melt(m) 
+0

wow, che è leggermente più elegante haha. Grazie mille Akrun. – user3030872