[R] Speeding nested loops up

Daniel Malter daniel at umd.edu
Thu Aug 18 02:54:43 CEST 2011


General suggestions: avoid cbind() and avoid accessing data frames. Convert
data frames to matrices before accessing them. Also, why do you print? You
don't really want to print(t) for every iteration of the loop, do you? Also
avoid defining elements within the loop that need to be defined only once (
such as path<- paste("c:/Data/",csvfile) ). 

For more specific help it would help if you provided a minimally
self-contained example (one that we can copy-paste in the R prompt) as
requested in the posting guide.

HTH,
Daniel


mark_horo wrote:
> 
> Hi I'm trying to speed my loop up. Any Suggestions?? At the moment it
> takes a few days to run.
> 
> THE CODE
> ---------------------------------------------------------------------------------------------------
> 	for(i in 1:11) {
> 		for (j in 3:12) {
> 			for (k in 1:273107) {					
> 						y[k,1] <- x[i,j,k]
> 						print(y)
> 								Rainfall_dataset <- read.table("1km_grid_nzmg.csv", 
> 								header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)	
> 
> 								t <- Rainfall_dataset
> 								print(t)
> 								
> 								p<-cbind(t,y)
> 								#y<-cbind(t,y)
> 								#print(y)			
> 			}
> 						# This where you write out array y to a csv file
> 						# Save output as a csv file	
> 						site <- paste("site",i,"-",j)
> 
> 							csvfile <- paste(site,sep=".","csv"); print(csvfile)
> 							path<- paste("c:/Data/",csvfile)
> 							print(path)
> 							write.csv(p,file=path, row.names = TRUE)		
> 		}
> 	}
> 

--
View this message in context: http://r.789695.n4.nabble.com/Speeding-nested-loops-up-tp3751485p3751542.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list