**Peter Solymos - R related posts**, and kindly contributed to R-bloggers)

An update (v 0.1-1) of the **intrval** package was recently published on CRAN. The package simplifies interval related logical operations (read more about the motivation in this post).

So what is new in this version? Some of the inconsistencies in the 1st CRAN release have been cleaned up, and I have been pushed hard (see GitHub issue to implement all the 16

interval-to-interval operators.

These 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 as in `c(a1, b1) %[]o[]% c(a2, b2)`

.

Interval 1: | Interval 2: `[]` |
`[)` |
`(]` |
`()` |
---|---|---|---|---|

`[]` |
`%[]o[]%` |
`%[]o[)%` |
`%[]o(]%` |
`%[]o()%` |

`[)` |
`%[)o[]%` |
`%[)o[)%` |
`%[)o(]%` |
`%[)o()%` |

`(]` |
`%(]o[]%` |
`%(]o[)%` |
`%(]o(]%` |
`%(]o()%` |

`()` |
`%()o[]%` |
`%()o[)%` |
`%()o(]%` |
`%()o()%` |

The overlap of two closed intervals, [a1, b1] and [a2, b2],

is evaluated by the `%[]o[]%`

(`%[o]%`

is an alias)

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).

Note that interval endpoints

are sorted internally thus ensuring the conditions

`a1 <= b1`

and `a2 <= b2`

is not necessary.

```
c(2, 3) %[]o[]% c(0, 1)
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)
```

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).

`%)o(%`

is used for the negation of two closed interval overlap (`%[o]%`

),

directional evaluation is done via the operators

`%[`

`%[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>)%`

.

Overlap operators with mixed endpoint do not have

negation and directional counterparts.

```
```
Equal
Not equal
Less than
Greater than
`%[o]%`

`%)o(%`

`%[`

`%[o>]%`

`%(o)%`

`%]o[%`

`%(`

`%(o>)%`

Thanks for all the feedback so far and please keep’em coming:

leave a comment below or use the issue tracker

to provide feedback or report a problem.

To **leave a comment** for the author, please follow the link and comment on their blog: ** Peter Solymos - R related posts**.

R-bloggers.com offers **daily e-mail updates** about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...