From: Rheannon <rbrooks_at_uvic.ca>

Date: Tue, 22 Jul 2008 09:08:59 -0700 (PDT)

Date: Tue, 22 Jul 2008 09:08:59 -0700 (PDT)

Here is the full code:

R <- 5328

#Temp is a temperature file with daily temp. values for each day of the

year, for 5328 locations

Temp <- rnorm(100)

dim(Temp) <- c(365,5328)

# transpose temp dataframe in order to perform rollmean (running mean) on

proper data section

Temp_T <- t(Temp)

library(zoo)

Temp_T <- zoo(Temp_T)

**#**** 31 DAY RUNNING MEAN *********
**
RM <- rollmean(Temp_T, 31)

#function that finds first negative number, if there are none a value of 365

will be output

firstneg = function(x)if(any(x<0))min(which(x<0)) else 335

#apply the function to every column in Matrix

FN <- apply(RM,2,firstneg)

#problem: column values are off by 30 (31 day running mean)

FN <- matrix(FN)

add = function(x)x=x+30

FN <- apply(FN,2,add)

#function that finds last negative number, if there are none a value of 365

will be output

lastneg = function(x)if(any(x<0))max(which(x<0)) else 335

#apply the function to every column in Matrix

LN <- apply(RM,2,lastneg)

#problem: column values are off by 30

LN <- matrix(LN)

LN <- apply(LN,2,add)

RMT <- t(RM)

#Create and fill an empty matrix with zeros

sum <- matrix(nrow=R,ncol=1)

for(i in 1:R){sum[i] <- 0}

#******This is the loop that I would like to speed up************

#sum values between FN and LN, excluding positive values

for(i in 1:R){

for(j in FN[i]:LN[i]){

if(Temp[i,j]<0)

sum[i] <- sum[i] + sum(Temp[i,j])}}

-- View this message in context: http://www.nabble.com/how-to-speed-up-this-for-loop--tp18579577p18592932.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help_at_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.Received on Tue 22 Jul 2008 - 16:40:22 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Tue 22 Jul 2008 - 18:32:00 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*