[R] identifying a 'run' in a vector

B77S bps0002 at auburn.edu
Thu Jul 7 04:38:19 CEST 2011


Yes Gabor, you definition (a sequence of numbers which each increase by 1
over the prior
number) is what I meant.  Sorry it that was not clear and I thank you and
Joshua for your time and your explanation. 
This should work fine. 




Gabor Grothendieck wrote:
> 
> On Wed, Jul 6, 2011 at 7:32 PM, B77S <bps0002 at auburn.edu> wrote:
>> Hi,
>>
>> How can I discern which elements in x (see below) are in 'order', but
>> more
>> specifically.. only the 1st 'ordered run'?
>> I would like for it to return elements 1:8... there may be ordered values
>> after 1:8, but those are not of interest.
>>
>> x <- c(1, 2, 3, 4, 5, 6, 7, 8, 20, 21, 22, 45)
>>
>>
> 
> Since the definition of an ordered run is not given we assume that it
> is a sequence of numbers which each increase by 1 over the prior
> number.  If that is not it then you will need to clarify the problem
> definition.
> 
> First calculate a logical vector which is TRUE at each position which
> starts a new run.  Note that the first position in x always starts a
> new run even if that run is a singleton so it can be set to TRUE.  The
> remaining elements can be computed using diff as shown.   The
> resulting logical vector is the argument to cumsum below.
> 
> Taking the cumulative sum of this logical vector gives a vector the
> same length as x but with each element of the 1st run replaced with 1,
> each element of the 2nd run replaced with 2 and so on.
> 
> Finally, since we only want the 1st run we pick out those positions of
> x where the cumsum equals 1.
> 
>> x[cumsum(c(TRUE, diff(x) != 1)) == 1]
> [1] 1 2 3 4 5 6 7 8
> 
> 
> -- 
> Statistics & Software Consulting
> GKX Group, GKX Associates Inc.
> tel: 1-877-GKX-GROUP
> email: ggrothendieck at gmail.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.
> 

--
View this message in context: http://r.789695.n4.nabble.com/identifying-a-run-in-a-vector-tp3650295p3650509.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list