[R] how to find interval?

PIKAL Petr petr.pikal at precheza.cz
Tue Sep 17 12:54:40 CEST 2013


Hi

I am not sure if my solution is general enough

diff(c(0,which(1:10 %in% c(3, 5, 6, 10))))
[1] 3 2 1 4

Regards
Petr


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of gildororonar at mail-on.us
> Sent: Tuesday, September 17, 2013 12:15 PM
> To: r-help at r-project.org
> Subject: [R] how to find interval?
> 
> I can do this:
> 
> > 1:10 %in% c(3, 5, 6, 10)
>   [1] FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE
> 
> but what I wish to get is:
> 
> [1] 3 2 1 4
> 
> let me explain:
> 
> 3 # [1:3] ends with TRUE, i.e. FALSE FALSE  TRUE
> 2 # [4:5] ends with TRUE, i.e. FALSE  TRUE
> 1 # [6:6] ends with TRUE, i.e. TRUE
> 4 # [7:10] ends with TRUE, i.e. FALSE FALSE FALSE TRUE
> 
> That is, %in% gave me a serial whether or not the element is in a set,
> the length is equal to the former, i.e. 1:10
> 
> But I wish to get a serial of intevals of occurance of the element in
> the set, the length is equal to the latter i.e. c(3, 5, 6, 10)
> 
> With ths task of finding the intervals, I found, with googling, a
> function called findInterval. I did read every line of that manual, and
> it seems to be for a completely different purpose.
> 
> Kindly help the poor newbie:)
> 
> ______________________________________________
> 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.



More information about the R-help mailing list