Using the %in% operator in R

Need a quick way to see if a value is contained within a R vector? The %in% operator in R is likely exactly what you’re looking for.

What is the %in% operator in R?

The %in% operator is an operator which services the purposes of an array check function in other languages or the “in” operator in Python. It takes a single value and returns a Boolean True / False result if the value is present within the array you’re checking. Sample code provided below.

``````# %in% in r example (set up R vector)
> test <- c(1,2,3,4,5,63,2,4,32,47,42)

# %in% in r example (missing value)
> 41 %in% test
[1] FALSE

# %in% in r example (value found)
> 42 %in% test
[1] TRUE

# %in% r - using variables for search value and vector
> secretvalue <- 5
> secretvalue %in% test
[1] TRUE``````

%in% R applied to checking Data Frames

The same operator can be used to scan a column of an R dataframe to detect if a particular value is present. In the example below, we’re going to check some time stamps in the ChickWeight data set (one of R’s built in data sets, describes how fast chickens grow on different diets). The (fictitious) goal of this analysis is to assess if we have data points for specific days.

``````# #in# r example - checking a data frame
weight Time Chick Diet
1     42    0     1    1
2     51    2     1    1
3     59    4     1    1
4     64    6     1    1
5     76    8     1    1
6     93   10     1    1

# %in% in r - tests, negative result (no value)
> 5 %in% ChickWeight\$Time
[1] FALSE
> 25 %in% ChickWeight\$Time
[1] FALSE
> 100 %in% ChickWeight\$Time
[1] FALSE

# %in% in r - tests, positive result (no value)
> 6 %in% ChickWeight\$Time
[1] TRUE``````

Using the %in% operator to compare two vectors

You can use the %in% operator to compare two vectors. It will return on array (same number of items as the first vector), identifying the status of each element (True – Present, False – Missing) in the initial vector. This is a handy way to quickly handle complex comparisons where you may have multiple conditions on each side of the logic statement.

``````# %in% in R example - comparing vectors

# check vector of multiple values - %in% r operator
> c(1, 2) %in% test
[1] TRUE TRUE

# how %in% r operator handles missing values
> c(1, 2, 21) %in% test
[1]  TRUE  TRUE FALSE``````

Why use the %in% operator?

Like most of the R programming language, there is more than one way to do things here. Checking an array for the presence or absence of a value is a common programming task. That being said, I like the elegant simplicity and readability of using the %in% operator.

It is said that code should be written for humans to read rather than computers to process. With its intuitive elegant simplicity, the %in% operator fulfills this vision.