# [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 -----
> 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
>> 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