For precisely this particular type of question, the following seems to be the simplest, most direct, and most transparent solution:
rowSums(x%*%(1:ncol(x))) # [1] 1 3 2 3 2 1 Ted. On 11-Jun-08 09:21:35, Dimitris Rizopoulos wrote: > sorry, my previous answer was not correct; you need: > > x <- matrix(c(1,0,0, 0,0,1, 0,1,0, 0,0,1, 0,1,0, 1,0,0), > ncol = 3, byrow = TRUE) > which(t(x == 1), arr.ind = TRUE)[, "row", drop = FALSE] > > > Best, > Dimitris > > ---- > Dimitris Rizopoulos > Biostatistical Centre > School of Public Health > Catholic University of Leuven > > Address: Kapucijnenvoer 35, Leuven, Belgium > Tel: +32/(0)16/336899 > Fax: +32/(0)16/337015 > Web: http://med.kuleuven.be/biostat/ > http://www.student.kuleuven.be/~m0390867/dimitris.htm > > > ----- Original Message ----- > From: <[EMAIL PROTECTED]> > To: <r-help@r-project.org> > Sent: Wednesday, June 11, 2008 10:10 AM > Subject: [R] Matrix transformation problem > > >> >> ng, >> >> I have a matrix (x) with binary content. Each row of the matrix >> holds exactly one 1, and the rest of the row is zeros. The thing is >> that I need to 'collapse' the matrix to one column where each row >> holds the original column index of the 1's (y). Sometimes, the >> matrix is quite large, so I have a perfomance problem. >> >> x <- matrix(c(1,0,0, 0,0,1, 0,1,0, 0,0,1, 0,1,0, >> 1,0,0),ncol=3,byrow=T) >> x >> [,1] [,2] [,3] >> [1,] 1 0 0 >> [2,] 0 0 1 >> [3,] 0 1 0 >> [4,] 0 0 1 >> [5,] 0 1 0 >> [6,] 1 0 0 >> >> In the matrix above, on the first row, the 1 is in column 1, hence >> '1' on the first row in the matrix below. On the second row in the >> matrix above, the 1 is in column 3, hence the '3' on the second row >> in the matrix below. And so on... >> >> y >> [,1] >> [1,] 1 >> [2,] 3 >> [3,] 2 >> [4,] 3 >> [5,] 2 >> [6,] 1 >> >> ______________________________________________ >> R-help@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. >> > > > Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm > > ______________________________________________ > R-help@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. -------------------------------------------------------------------- E-Mail: (Ted Harding) <[EMAIL PROTECTED]> Fax-to-email: +44 (0)870 094 0861 Date: 11-Jun-08 Time: 10:49:13 ------------------------------ XFMail ------------------------------ ______________________________________________ R-help@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.