[R] Matrix transformation problem

(Ted Harding) Ted.Harding at manchester.ac.uk
Wed Jun 11 11:49:17 CEST 2008


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: <stefan.petersson at inizio.se>
> To: <r-help at 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 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.
>> 
> 
> 
> Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> 
> ______________________________________________
> 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.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 11-Jun-08                                       Time: 10:49:13
------------------------------ XFMail ------------------------------



More information about the R-help mailing list