Converting a Matrix to a Vector
Use the 'reshape' package:
library(reshape) melt(m)
X1 X2 value 1 A O 0.26550866 2 B O 0.37212390 3 C O 0.57285336 4 D O 0.90820779 5 E O 0.20168193 6 A P 0.89838968 7 B P 0.94467527 8 C P 0.66079779 9 D P 0.62911404 10 E P 0.06178627 11 A Q 0.20597457 12 B Q 0.17655675 13 C Q 0.68702285 14 D Q 0.38410372 15 E Q 0.76984142 16 A R 0.49769924 17 B R 0.71761851 18 C R 0.99190609 19 D R 0.38003518 20 E R 0.77744522 21 A S 0.93470523 22 B S 0.21214252 23 C S 0.65167377 24 D S 0.12555510 25 E S 0.26722067
On Wed, Mar 25, 2009 at 3:13 AM, 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? -- View this message in context: http://www.nabble.com/Converting-a-Matrix-to-a-Vector-tp22696267p22696267.html Sent from the R help mailing list archive at Nabble.com.
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?