On Wed, Nov 17, 2010 at 6:00 PM, Alexander Shenkin <ashen...@ufl.edu> 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
Try this: replace(diag(a)*0, cbind(seq_along(a), a), 1) -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ 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.