RE: [R] transform large matrix into list

From: Liaw, Andy <andy_liaw_at_merck.com>
Date: Tue 07 Jun 2005 - 23:41:33 EST


Here's one way to do it:

> M

   x1 x2
y1 1 2
y2 4 5
y3 7 8
> (L <- cbind(v=c(M), x=c(col(M)), y=c(row(M))))

     v x y

[1,] 1 1 1
[2,] 4 1 2
[3,] 7 1 3
[4,] 2 2 1
[5,] 5 2 2
[6,] 8 2 3

(The seemingly extraneous c()'s are to drop the dimensions of those matrices.)

Are you sure your L[3, 3] is correct?

Also, for a 10K^2 M, L is going to take up over 1.1GB of memory! You may want to look at SparseM and Matrix packages, which have facilities for handling sparse matrices.

Andy

> From: Stefan Mischke
>
> Dear List
>
> I need to transform a large matrix M with many NAs into a list L with
> one row for each non missing cell. Every row should contain the cell
> value in the first column, and its coordinates of the matrix
> in column
> 2 and 3.
>
> M:
> x1 x2
> y1 1 2
> y2 4 5
> y3 7 8
>
> L:
> v x y
> 1 1 1
> 4 1 2
> 7 1 2
> 2 2 1
> 5 2 2
> 8 2 3
>
> I'm trying to do this with a loop, but since my matrix is quite large
> (around 10k^2) this just takes a very long time.
> There must be a more efficient and elegant way to do this. Any hints?
>
> Thanks,
> Stefan
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
>
>



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Jun 08 00:17:24 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:32:26 EST