Making use of the row() and col() functions speeds things up a bit. makeMatrix2 <- function(a, b, dim) { X <- matrix(NA, ncol=dim, nrow=dim) X <- exp( (-1*abs(row(X) - col(X)))/(3*b) ) diag(X) <- a X }
system.time(makeMatrix(1, 2, 1000)) system.time(makeMatrix2(1, 2, 1000)) Jean `·.,, ><(((º> `·.,, ><(((º> `·.,, ><(((º> Jean V. Adams Statistician U.S. Geological Survey Great Lakes Science Center 223 East Steinfest Road Antigo, WI 54409 USA From: monk <m...@hush.com> To: r-help@r-project.org Date: 08/01/2011 01:20 PM Subject: [R] fill Matrix quicker Sent by: r-help-boun...@r-project.org dear all, i have a quite simple question, i want to fill up a Matrix like done in the following function, but the performance is very bad for large dimensions is there a way to do this like with apply or something similar? makeMatrix <- function(a, b,dim) { X=matrix(0,ncol=dim,nrow=dim) for (i in c(1:dim)){ for (j in c(1:dim)) { if (i==j) {X[i,j]<-a} else { X[i,j]<- exp(( -1*abs(i-j))/(3*b)) } } } X } -- View this message in context: http://r.789695.n4.nabble.com/fill-Matrix-quicker-tp3710428p3710428.html Sent from the R help mailing list archive at Nabble.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. [[alternative HTML version deleted]]
______________________________________________ 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.