Skip to content
Prev 178083 / 398502 Next

transposing a matrix - row by row?

Dear Dimitri,

Have a look at melt() from the reshape package.

X<-matrix(c(10,20,30,40,50,60),2,3)
dimnames(X)<-list(c("1","2"),c("1","2","3"))
library(reshape)
melt(X)

HTH,

Thierry 


------------------------------------------------------------------------
----
ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek / Research Institute for Nature
and Forest
Cel biometrie, methodologie en kwaliteitszorg / Section biometrics,
methodology and quality assurance
Gaverstraat 4
9500 Geraardsbergen
Belgium 
tel. + 32 54/436 185
Thierry.Onkelinx at inbo.be 
www.inbo.be 

To call in the statistician after the experiment is done may be no more
than asking him to perform a post-mortem examination: he may be able to
say what the experiment died of.
~ Sir Ronald Aylmer Fisher

The plural of anecdote is not data.
~ Roger Brinner

The combination of some data and an aching desire for an answer does not
ensure that a reasonable answer can be extracted from a given body of
data.
~ John Tukey

-----Oorspronkelijk bericht-----
Van: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
Namens Dimitri Liakhovitski
Verzonden: donderdag 23 april 2009 16:31
Aan: R-Help List
Onderwerp: [R] transposing a matrix - row by row?

Hello,
I have a matrix that is a product of tapply on a larger data set.
Let's assume it looks like this:

X<-matrix(c(10,20,30,40,50,60),2,3)
dimnames(X)<-list(c("1","2"),c("1","2","3"))
(X)

   1   2   3
1 10 30 50
2 20 40 60

Is there an efficient way of transforming this matrix into the following
matrix:

rows columns entries
1          1          10
1          2          30
1          3          50
2          1          20
2          2          40
2          3          60


Thank you very much!