[R] translate vector of numbers to indicies of 0/1 matrix

David Winsemius dwinsemius at comcast.net
Thu Nov 18 00:13:36 CET 2010


On Nov 17, 2010, at 6:00 PM, Alexander Shenkin wrote:

> Hello All,
>
> Searched around, haven't found a decent solution.
>
> I'd like to translate a vector of numbers to a matrix (or to a list of
> vectors) such that the vector values would serve as indicies of the  
> 1's
> in an otherwise-zero-filled matrix (or list of vectors). For example:
>
>> a = c(1,3,3,4)
>
> # perform operation
>
>     [,1] [,2] [,3] [,4]
> [1,]    1    0    0    0
> [2,]    0    0    1    0
> [3,]    0    0    1    0
> [4,]    0    0    0    1

 > cc <- matrix(0, ncol=max(a), nrow=length(b))
 > cc[matrix(c(1:4, a), ncol=2)] <- 1
# matrix indexing with two column argument
 > cc
      [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    0    0    1    0
[3,]    0    0    1    0
[4,]    0    0    0    1

-- 

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list