[R] How to optimize this loop ?
Nicolas Prune
np at alambic.org
Thu Jan 18 14:11:11 CET 2007
Dear R Users,
I request your help to optimize a loop.
Given a series of observations, I want to know how many consecutive past
observations are below the last one.
e.g :
my_series <- c(3, 4, 10,14,8,3,4,6,9)
As the last number (9) is higher than the four preceding numbers (6, 4, 3, 8),
this function should return 4.
my_series <- c(3, 4, 10,14,8,3,4,11,9)
Here, it should return 0, as 9 is immediately preceeded by a higher number.
So far, I do this awful loop :
result <- 0
for (i in 1:length(my_series-1))
{
if (my_series[length(my_series)-i]>end(my_series)[1])
{ result <- i-1 ; break }
}
I thing there's a better way...
my_series > my_series[end][1] returns :
TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE FALSE
, which seems more appealing (once the last "FALSE" is removed), but now, how to
know the size of the last consecutive series of "TRUE" ?
Can you see a better way ?
Thanks.
More information about the R-help
mailing list