Thank you for your answer. This is what I needed. 


> From: S.Ellison@lgcgroup.com
> To: r-help@r-project.org
> Date: Fri, 4 Oct 2013 15:13:49 +0100
> Subject: Re: [R] Trying to avoid nested loop
> 
> 
> > I'm trying to avoid using nested loops in the following code but I'm
> > not sure how to proceed. Any help would be greatly appreciated.
> > With regards,Phil
> > X = matrix(rnorm(100), 10, 10)
> > result = 0
> > for(m in 1:nrow(X)){  
> >	for(n in 1:ncol(X)){        
> >		if(X[m,n] != 0){      
> >			result = result + (X[m,n] / (1 + abs(m - n)))    
> >		}      
> >	}
> > }
> First, you don't need  the 'if', do you? If X[m,n]==0 (rare for a floating point number) (X[m,n] / (1 + abs(m - n)) will be zero anyway.
> 
> Then, depending on the matrix size, you can probably do the whole thing using an index array.
> 
> Something like:
> 
> idx <- as.matrix( expand.grid(1:nrow(X), 1:ncol(X)) )
> result <- sum(  X[idx] / apply(idx,1, function(x) 1+abs(diff(x))) )
> 
> #... which seemed to do the identically the same thing as your loop when I tried it.
> 
> S Ellison
> 
> 
> *******************************************************************
> This email and any attachments are confidential. Any use...{{dropped:8}}
> 
> ______________________________________________
> 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]]

