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
                                         spec...@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@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.


______________________________________________
R-help@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.

Reply via email to