# ovrlap: Relational Operators Comparing Two Intervals In intrval: Relational Operators for Intervals

## Description

Functions for evaluating if two intervals overlap or not.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26``` ```interval1 %[o]% interval2 interval1 %)o(% interval2 interval1 %[]% interval2 interval1 %(o)% interval2 interval1 %]o[% interval2 interval1 %()% interval2 interval1 %[]o[]% interval2 interval1 %[]o[)% interval2 interval1 %[]o(]% interval2 interval1 %[]o()% interval2 interval1 %[)o[]% interval2 interval1 %[)o[)% interval2 interval1 %[)o(]% interval2 interval1 %[)o()% interval2 interval1 %(]o[]% interval2 interval1 %(]o[)% interval2 interval1 %(]o(]% interval2 interval1 %(]o()% interval2 interval1 %()o[]% interval2 interval1 %()o[)% interval2 interval1 %()o(]% interval2 interval1 %()o()% interval2 ```

## Arguments

 `interval1, interval2` vector, 2-column matrix, list, or `NULL`: the interval end points of two (sets) of closed intervals to compare.

## Details

The operators define the open/closed nature of the lower/upper limits of the intervals on the left and right hand side of the `o` in the middle.

The overlap of two closed intervals, [a1, b1] and [a2, b2], is evaluated by the `%[o]%` (alias for `%[]o[]%`) operator (a1 <= b1, a2 <= b2). Endpoints can be defined as a vector with two values (`c(a1, b1)`)or can be stored in matrix-like objects or a lists in which case comparisons are made element-wise. If lengths do not match, shorter objects are recycled. These value-to-interval operators work for numeric (integer, real) and ordered vectors, and object types which are measured at least on ordinal scale (e.g. dates), see Examples. Note: interval endpoints are sorted internally thus ensuring the conditions a1 <= b1 and a2 <= b2 is not necessary. `%)o(%` is used for the negation of two closed interval overlap, directional evaluation is done via the operators `%[<o]%` and `%[o>]%`.

The overlap of two open intervals is evaluated by the `%(o)%` (alias for `%()o()%`). `%]o[%` is used for the negation of two open interval overlap, directional evaluation is done via the operators `%(<o)%` and `%(o>)%`.

Overlap operators with mixed endpoint do not have negation and directional counterparts.

## Value

A logical vector, indicating if `interval1` overlaps `interval2`. Values are `TRUE`, `FALSE`, or `NA`.

## Author(s)

Peter Solymos <[email protected]>

See help page for relational operators: `Comparison`.

See `%[]%` for relational operators for value-to-interval comparisons.

See `factor` for the behavior with factor arguments. See also `%in%` for value matching and `%ni%` for negated value matching for factors.

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59``` ```## motivating examples from example(lm) ## Annette Dobson (1990) "An Introduction to Generalized Linear Models". ## Page 9: Plant Weight Data. ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) group <- gl(2, 10, 20, labels = c("Ctl","Trt")) weight <- c(ctl, trt) lm.D90 <- lm(weight ~ group - 1) # omitting intercept ## compare 95% confidence of the 2 groups to each other (CI.D90 <- confint(lm.D90)) CI.D90[1,] %[o]% CI.D90[2,] ## simple interval comparisons c(2:3) %[o]% c(0:1) ## vectorized comparisons c(2:3) %[o]% list(0:4, 1:5) c(2:3) %[o]% cbind(0:4, 1:5) c(2:3) %[o]% data.frame(a=0:4, b=1:5) list(0:4, 1:5) %[o]% c(2:3) cbind(0:4, 1:5) %[o]% c(2:3) data.frame(a=0:4, b=1:5) %[o]% c(2:3) list(0:4, 1:5) %[o]% cbind(rep(2,5), rep(3,5)) cbind(rep(2,5), rep(3,5)) %[o]% list(0:4, 1:5) cbind(rep(3,5),rep(4,5)) %)o(% cbind(1:5, 2:6) cbind(rep(3,5),rep(4,5)) %[]% cbind(1:5, 2:6) ## open intervals list(0:4, 1:5) %(o)% cbind(rep(2,5), rep(3,5)) cbind(rep(2,5), rep(3,5)) %(o)% list(0:4, 1:5) cbind(rep(3,5),rep(4,5)) %]o[% cbind(1:5, 2:6) cbind(rep(3,5),rep(4,5)) %()% cbind(1:5, 2:6) dt1 <- as.Date(c("2000-01-01", "2000-03-15")) dt2 <- as.Date(c("2000-03-15", "2000-06-07")) dt1 %[]o[]% dt2 dt1 %[]o[)% dt2 dt1 %[]o(]% dt2 dt1 %[]o()% dt2 dt1 %[)o[]% dt2 dt1 %[)o[)% dt2 dt1 %[)o(]% dt2 dt1 %[)o()% dt2 dt1 %(]o[]% dt2 dt1 %(]o[)% dt2 dt1 %(]o(]% dt2 dt1 %(]o()% dt2 dt1 %()o[]% dt2 dt1 %()o[)% dt2 dt1 %()o(]% dt2 dt1 %()o()% dt2 ```

### Example output

```           2.5 %  97.5 %
groupCtl 4.56934 5.49466
groupTrt 4.19834 5.12366
2.5 %
TRUE
[1] FALSE
[1] FALSE  TRUE  TRUE  TRUE FALSE
[1] FALSE  TRUE  TRUE  TRUE FALSE
[1] FALSE  TRUE  TRUE  TRUE FALSE
[1] FALSE  TRUE  TRUE  TRUE FALSE
[1] FALSE  TRUE  TRUE  TRUE FALSE
[1] FALSE  TRUE  TRUE  TRUE FALSE
[1] FALSE  TRUE  TRUE  TRUE FALSE
[1] FALSE  TRUE  TRUE  TRUE FALSE
[1]  TRUE FALSE FALSE FALSE  TRUE
[1] FALSE FALSE FALSE FALSE  TRUE
[1]  TRUE FALSE FALSE FALSE FALSE
[1] FALSE FALSE  TRUE FALSE FALSE
[1] FALSE FALSE  TRUE FALSE FALSE
[1]  TRUE  TRUE FALSE  TRUE  TRUE
[1] FALSE FALSE FALSE  TRUE  TRUE
[1]  TRUE  TRUE FALSE FALSE FALSE
[1] TRUE
[1] TRUE
[1] FALSE
[1] FALSE
[1] FALSE
[1] FALSE
[1] FALSE
[1] FALSE
[1] TRUE
[1] TRUE
[1] FALSE
[1] FALSE
[1] FALSE
[1] FALSE
[1] FALSE
[1] FALSE
```

intrval documentation built on May 29, 2017, 8:30 p.m.