one approach could be the following (maybe there is something better for large matrices):

M <- cbind(c(1, 4, 7, NA, 3, 2), c(2, 5, 8, 4, NA, 3))
##############
d <- dim(M)
L <- cbind(c(M), rep(1:d[2], each = d[1]), rep(1:d[1], d[2]))
L[complete.cases(L), ]


I hope it helps.

Best,
Dimitris

----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/16/336899
Fax: +32/16/337015
Web: http://www.med.kuleuven.ac.be/biostat/
    http://www.student.kuleuven.ac.be/~m0390867/dimitris.htm


----- Original Message ----- From: "Stefan Mischke" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, June 07, 2005 2:55 PM
Subject: [R] transform large matrix into list


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

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to