Duncan Murdoch <[EMAIL PROTECTED]> writes: > On 10/3/2006 4:59 PM, roger bos wrote: > > Dear useRs, > > > > Trying to replace the diagonal of a matrix is not working for me. I > > want a matrix with .6 on the diag and .4 elsewhere. The following > > code looks like it should work--when I lookk at mps and idx they look > > how I want them too--but it only replaces the first element, not each > > element on the diagonal. > > > > mps <- matrix(rep(.4, 3*3), nrow=n, byrow=TRUE) > > idx <- diag(3) > > mps > > idx > > mps[idx] <- rep(.6,3) > > > > I also tried something along the lines of diag(mps=.6, ...) but it > > didn't know what mps was. > > Matrix indexing can use a two column matrix, giving row and column > numbers. So you could get what you want by > > mps[cbind(1:n,1:n)] <- 0.6
Or even diag(mps) <- 0.6 (this *is* displayed quite prominently on help(diag)!) -- O__ ---- Peter Dalgaard Ă˜ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ [email protected] 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.
