[R] spped up a function

Santiago Guallar
Tue, 02 Jul 2013 17:47:15 -0000

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