Learn R Programming

inops (version 0.0.1)

in_detect: Matching Values and Intervals

Description

Operators for detecting which values are within a given interval or set.

Usage

x %in{}% table

x %out{}% table

x %in[]% interval

x %out[]% interval

x %in()% interval

x %out()% interval

x %in(]% interval

x %out(]% interval

x %in[)% interval

x %out[)% interval

x %in~% pattern

x %out~% pattern

x %in~p% pattern

x %out~p% pattern

x %in~f% pattern

x %out~f% pattern

x %in#% count

x %out#% count

Arguments

x

vector or array of values to be matched.

table

vector or list to be matched against.

interval

numeric vector defining a range to be matched against.

pattern

pattern to be matched against.

count

numeric vector defining counts for count-based selection.

Value

a logical vector or an array of the same dimensions as x indicating if each value of x is within the defined subset.

Details

Compared with default %in% implementation in R the operators implemented here try to be more consistent with other default infix operators like == and <. In particular they preserve the dimensions and the missing values (see examples).

Style of parentheses define the type of matching template:

  • %in{}% detects which elements of x are present in the set given by the table argument.

  • %in()%, %in[]%, %in(]% and %in[)% detect the elements of x included in a range of interval argument, using range(interval). This range being closed, open on both sides, open on the left, or open on the right, respectively.

  • %in~%, %in~p% and %in~f% detect the elements of x that match the regular expression given by pattern. They wrap grepl() with the default parameters of perl = TRUE, and with fixed = TRUE, respectively.

  • %in#% detects the elements that occur a specified number of times. Operators of the form %out<suffix>% return the negation of %in<suffix>%

See Also

%in%

Examples

Run this code
# NOT RUN {
# difference in behaviour with dimensions when compared to %in%
iris[1:10,] %in% "setosa"
iris[1:10,] == "setosa"
iris[1:10,] %in{}% "setosa"

# difference in behaviour with missing values when compared to %in%
x <- c(1,2,3,NA,4)
x %in% c(1,2,3)
x %in{}% c(1,2,3)

# other interval oparators
x <- 1:10
x %in[]% c(3,7)
x %in()% c(3,7)
x %in(]% c(3,7)
x %in[)% c(3,7)
x %out[]% c(3,7)

# when more than 2 numbers are provided for the interval - range is used
x <- 1:10
all.equal(x %in[]% c(2,4), x %in[]% c(2,3,4))
all.equal(x %in[]% c(2,4), x %in[]% range(c(2,3,4)))

# matching according to regular expressions
iris$Species %in~% "^v"
iris$Species %in~f% "^v"
iris$Species %in~f% "versicolor"
iris$Species %in~f% c("versicolor", "virginica")

# selecting by number of occurances
mtcars$gear %in#% 1:5
mtcars$gear %out#% 1:5

# }

Run the code above in your browser using DataLab