R: Operators To Check, If a Value Lies Within Or Outside a Given...

Between, Outside {DescTools} | R Documentation

## Operators To Check, If a Value Lies Within Or Outside a Given Range

### Description

The between and outside operators are used to check, whether a vector of given values x lie within a defined range (or outside respectively). The values can be numbers, text or dates. Ordered factors are supported.

### Usage

    x %()% rng
    x %(]% rng
    x %[)% rng
    x %[]% rng

    x %][% rng
    x %](% rng
    x %)[% rng
    x %)(% rng

### Arguments

`x` | is a variable with at least ordinal scale, usually a numeric value, but can be an ordered factor or a text as well. Texts would be treated alphabetically.
`rng` | a vector of two values or a matrix with 2 columns, defining the minimum and maximum of the range for x. If rng is a matrix, x or rng will be recycled.

### Details

The between operators basically combine two conditional statements into one and simplify so the query process.
They are merely a wrapper for: `x >= rng[1] & x <= rng[2]`, where the round bracket `(` means "strictly greater than >" and the square bracket `[` means ">=". Numerical values of x will be handled by C-code, which is significantly faster than two comparisons in R (especially when x is huge). .
`%][%` is the negation of `%()%`, meaning all values lying outside the given range. Elements on the limits will return TRUE.
Both arguments will be recycled to the highest dimension, which is either the length of the vector or the number of rows of the matrix.
See also the routines used to check, whether two ranges overlap (`Overlap`, `Interval`).

### Value

A logical vector of the same length as x.

### Author(s)

Andri Signorell <andri@signorell.net> based on C-code by Kevin Ushey <kevinushey@gmail.com>

### See Also

`if`, `ifelse`, `Comparison`, `Overlap`, `Interval`

### Examples

    x <- 1:9
    x %[]% c(3,5)

    # outside
    x <- 1:9
    x %][% c(3,5)

    c(x,NA) %[]% c(3,5)

    x %(]% c(3,5)

    # no result when from > to:
    x %[]% c(5,3)
    x %(]% c(5,5)

    # no problem:
    ordered(x) %[]% c(3,5)

    # not meaningful:
    factor(x) %[]% c(3,5)

    # characters
    letters[letters %(]% c("d","h")]

    data(d.pizza)
    x <- levels(d.pizza$driver)
    x %[]% c("C","G")

    # select diamonds with a price between 2400 and 2510
    data(d.diamonds)
    d.diamonds[d.diamonds$price %[]% c(2400,2510),]

    # use it with an ordered factor and select all diamonds with
    #   symmetry between G (included) and X (excluded).
    mean(d.diamonds[d.diamonds$symmetry %[)% c("G","X"),"price"])

    # use multiple ranges
    2 %[]% cbind(1:4,2:5)

    # both arguments are recycled
    c(2,3) %[]% cbind(1:4,2:5)

[Package DescTools version 0.99.36 Index]