The match() function returns the position of the first match between two R objects. You can use the %in% operator to know only whether the value has been matched.
match in R
The match() is a built-in R function that returns a vector of (first) matches of its first argument in its second argument. The %in% operator is a more intuitive interface as a binary operator, which returns a logical vector indicating a match or not for its left operand.
match(data, table, nomatch = NA_integer_, incomparables = NULL) x %in% table
table: It is a Vector or NULL to which the values should be compared against.
nomatch: It is the value to be returned when there is no match.
incomparables: They are values to be excluded from the match function.
It returns a vector of the same length as an input value.
Examples of match() function in R
Let’s define two vectors and use the match() function to match between two data objects.
rv <- 11 s_rv <- c(19, 21, 11, 18, 46) match(rv, s_rv)
The 3rd position has a value of 11, so the output will be 3.
Let’s match the two vectors with more than one element.
rv <- c(11, 12, 19, 22, 25) s_rv <- c(19, 21, 11, 18, 46) match(rv, s_rv)
 3 NA 1 NA NA
The above code returns the matched position (first matched position) of the first vector in the second vector; when no match is found, it returns NA will be returned.
match() function with nomatch=0
If the match is not found, then it is replaced with 0 instead of NA. So it will help us to replace the NA value with 0.
rv <- c(11, 12, 19, 22, 25) s_rv <- c(19, 21, 11, 18, 46) match(rv, s_rv, nomatch=0)
 3 0 1 0 0
Applying comparables to the match() function
If you want to exclude 11 value from the match() function, pass the comparables argument, so NA is returned for the position of value 11.
rv <- c(11, 12, 19, 22, 25) s_rv <- c(19, 21, 11, 18, 46) match(rv, s_rv, incomparables = 11)
 NA NA 1 NA NA
Applying match() Function to String
We can apply the match() function to character strings as well. Consider the following example character string.
rc <- c("data", "tata", "ta", "a") match("ta", rc)
The first match of “ta” is at the third position. You can see that tata also contains ta, but it will not return its index because it will check for the specific word and not its substring.
That is it for match() function in R.
Krunal Lathiya is an Information Technology Engineer by education and web developer by profession. He has worked with many back-end platforms, including Node.js, PHP, and Python. In addition, Krunal has excellent knowledge of Data Science and Machine Learning, and he is an expert in R Language. Krunal has written many programming blogs, which showcases his vast expertise in this field.