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

Phil Spector spector at stat.berkeley.edu
Thu Nov 18 00:08:18 CET 2010


Alexander -
    If I understand your problem, I think this 
function will make the matrix you want:

makeyourmatrix = function(vec){
    n = length(vec)
    mat = matrix(0,n,n)
    mat[cbind(1:n,vec)] = 1
    mat
}

> makeyourmatrix(c(1,3,3,4))
      [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    0    0    1    0
[3,]    0    0    1    0
[4,]    0    0    0    1

 					- Phil Spector
 					 Statistical Computing Facility
 					 Department of Statistics
 					 UC Berkeley
 					 spector at stat.berkeley.edu


On Wed, 17 Nov 2010, 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
>
>
> Any help greatly appreciated!
>
> thanks,
> allie
>
> ______________________________________________
> 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.
>



More information about the R-help mailing list