2015-05-21 3 views
6

Примечание: это не вопрос графика.Преобразование из матрицы n x m в длинную матрицу в R

У меня есть матрица NXM:

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

Я хотел бы преобразовать это в длинную матрицу:

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

Очевидно, вложенную для петель будут работать, но я знаю, что есть много хороших инструменты для преобразования матриц в R. До сих пор я только нашел литературу о преобразовании из длинных или широких матриц в матрицу nxm, а не в другую сторону. Мне что-то не хватает? Как я могу сделать это преобразование?

Спасибо!

ответ

7

Если вам нужен один столбец матрицы

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 

Для выхода data.frame, вы можете использовать melt из reshape2

library(reshape2) 
melt(m) 
+0

вау, что чуть более элегантно, ха-ха. Большое спасибо akrun. – user3030872

Смежные вопросы