[R] Intersection of two sets of intervals

Dimitris Rizopoulos d.rizopoulos at erasmusmc.nl
Wed Apr 15 15:12:31 CEST 2009


one way is:

list1 <- as.data.frame(list(open=c(1,5), close=c(2,10)))
list2 <- as.data.frame(list(open=c(1.5,3), close=c(2.5,10)))

data.frame(
     open = pmax(list1$open, list2$open),
     close = pmin(list1$close, list2$close)
)


I hope it helps.

Best,
Dimitris


Thomas Meyer wrote:
> Hi,
> 
> Algorithm question: I have two sets of "intervals", where an interval is 
> an ordered pair [a,b] of two numbers. Is there an efficient way in R to 
> generate the intersection of two lists of same?
> 
> For concreteness: I'm representing a set of intervals with a data.frame:
> 
>  > list1 = as.data.frame(list(open=c(1,5), close=c(2,10)))
>  > list1
>   open close
> 1    1     2
> 2    5    10
> 
>  > list2 = as.data.frame(list(open=c(1.5,3), close=c(2.5,10)))
>  > list2
>   open close
> 1  1.5   2.5
> 2  3.0  10.0
> 
> How do I get the intersection which would be something like:
>   open close
> 1  1.5   2.0
> 2  5.0  10.0
> 
> I wonder if there's some ready-built functionality that might help me 
> out. I'm new to R and am still learning to vectorize my code and my 
> thinking. Or maybe there's a package for interval arithmetic that I can 
> just pull off the shelf.
> 
> Thanks,
> 
> -tom
> 

-- 
Dimitris Rizopoulos
Assistant Professor
Department of Biostatistics
Erasmus University Medical Center

Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
Tel: +31/(0)10/7043478
Fax: +31/(0)10/7043014




More information about the R-help mailing list