Hi It seems to me, that you basically want merge, but I can miss the point. Try post
dput(head(xact)) dput(head(GPS)) and what shall be desired result based on those 2 datasets. Regards Petr > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-bounces@r- > project.org] On Behalf Of Santiago Guallar > Sent: Tuesday, July 02, 2013 7:47 PM > To: r-help > Subject: [R] spped up a function > > Hi, > > I have written a function to assign the values of a certain variable > 'wd' from a dataset to another dataset. Both contain data from the > same time period but differ in the length of their time intervals: > 'GPS' has regular 10-minute intervals whereas 'xact' has irregular > intervals. I attached simplified text versions from write.table. You > can also get a dput of 'xact' in this address: > http://www.megafileupload.com/en/file/431569/xact-dput.html). > The original objects are large and the function takes almost one hour > to finish. > Here's the function: > > fxG= function(xact, GPS){ > l <- rep( 'A', nrow(GPS) ) > v <- unique(GPS$Ring) # the process is carried out for several > individuals identified by 'Ring' > for(k in 1:length(v) ){ > I = v[k] > df <- xact[xact$Ring == I,] > for(i in 1:nrow(GPS)){ > if(GPS[i,]$Ring== I){# the code runs along the whole data.frame for > each i; it'd save time to make it stop with the last record of each i > instead u <- df$timepos <= GPS[i,]$timepos # fill vector l for each > interval t from xact <= each interval from GPS (take the max if there's > > 1 interval) l[i] <- df[max( which(u == TRUE) ),]$wd } } } return(l)} > > vwd <- fxG(xact, GPS) > > > My question is: how can I speed up (optimize) this function? > > Thank you for your help ______________________________________________ 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.