[R] Converting a Matrix to a Vector

Berwin A Turlach berwin at maths.uwa.edu.au
Wed Mar 25 08:42:03 CET 2009


G'day Ken,

On Wed, 25 Mar 2009 00:13:48 -0700 (PDT)
Ken-JP <kfmfe04 at gmail.com> wrote:

> 
> Say I have:
> 
> > set.seed( 1 )
> > m <- matrix( runif(5^2), nrow=5, dimnames =
> > list( c("A","B","C","D","E"), c("O","P","Q","R","S") ) )
> > m
>           O          P         Q         R         S
> A 0.2655087 0.89838968 0.2059746 0.4976992 0.9347052
> B 0.3721239 0.94467527 0.1765568 0.7176185 0.2121425
> C 0.5728534 0.66079779 0.6870228 0.9919061 0.6516738
> D 0.9082078 0.62911404 0.3841037 0.3800352 0.1255551
> E 0.2016819 0.06178627 0.7698414 0.7774452 0.2672207
> 
> -------------------------------------------------------------------------------------------
> 
> I want to create a vector v from matrix m that looks like this:
> 
> A.O 0.2655087
> B.O 0.3721239
> 
> v <- as.vector( m ) almost gives me what I want, but then I need to
> take combinations of colnames( m ) and rownames( m ) to get my labels
> and hope they match up in order: if not, manipulate the order.  This
> approach feels kludgy...
> 
> Is this the right approach or is there a better way?

R> tt <- reshape(data.frame(m), direction="long", varying=list(1:5), ids=rownames(m), times=colnames(m))
R> ind <- names(tt) %in% c("time", "id")
R> uu <- tt[,!ind]
R> names(uu) <- rownames(tt)
R> uu
       A.O        B.O        C.O        D.O        E.O        A.P        B.P 
0.26550866 0.37212390 0.57285336 0.90820779 0.20168193 0.89838968 0.94467527 
       C.P        D.P        E.P        A.Q        B.Q        C.Q        D.Q 
0.66079779 0.62911404 0.06178627 0.20597457 0.17655675 0.68702285 0.38410372 
       E.Q        A.R        B.R        C.R        D.R        E.R        A.S 
0.76984142 0.49769924 0.71761851 0.99190609 0.38003518 0.77744522 0.93470523 
       B.S        C.S        D.S        E.S 
0.21214252 0.65167377 0.12555510 0.26722067 

HTH.

Cheers,

	Berwin

=========================== Full address =============================
Berwin A Turlach                            Tel.: +65 6516 4416 (secr)
Dept of Statistics and Applied Probability        +65 6516 6650 (self)
Faculty of Science                          FAX : +65 6872 3919       
National University of Singapore     
6 Science Drive 2, Blk S16, Level 7          e-mail: statba at nus.edu.sg
Singapore 117546                    http://www.stat.nus.edu.sg/~statba




More information about the R-help mailing list