[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