On Aug 1, 2011, at 20:12 , monk wrote:

> 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
> }
> 

I'd go for something like 

X <- outer(1:dim, 1:dim, function(i,j) exp(-abs(i-j)/3/b))
diag(X) <- a


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

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd....@cbs.dk  Priv: pda...@gmail.com
"Døden skal tape!" --- Nordahl Grieg

______________________________________________
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