On Tue, 3 Oct 2006, Duncan Murdoch wrote: > 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 just diag(mps) <- 0.6 Charles C. Berry (858) 534-2098 Dept of Family/Preventive Medicine E mailto:[EMAIL PROTECTED] UC San Diego http://biostat.ucsd.edu/~cberry/ La Jolla, San Diego 92093-0717 ______________________________________________ R-help@stat.math.ethz.ch 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.