vec_in() returns a logical vector based on whether needle is found in haystack. vec_match() returns an integer vector giving location of needle in haystack, or NA if it's not found.

vec_match(needles, haystack)

vec_in(needles, haystack)

Arguments

needles, haystack

Vector of needles to search for in vector haystack. haystack should usually be unique; if not vec_match() will only return the location of the first match.

needles and haystack are coerced to the same type prior to comparison.

Value

A vector the same length as needles. vec_in() returns a logical vector; vec_match() returns an integer vector.

Details

vec_in() is equivalent to %in%; vec_match() is equivalen to match().

Missing values

In most cases, missing values are not considered to be equal, i.e. NA == NA is not TRUE. This behaviour would be unappealing here, so these functions consider all NAs to be equal. (Similarly, all NaN are also considered to be equal.)

Examples

hadley <- strsplit("hadley", "")[[1]] vec_match(hadley, letters)
#> [1] 8 1 4 12 5 25
vowels <- c("a", "e", "i", "o", "u") vec_match(hadley, vowels)
#> [1] NA 1 NA NA 2 NA
vec_in(hadley, vowels)
#> [1] FALSE TRUE FALSE FALSE TRUE FALSE
# Only the first index of duplicates is returned vec_match(c("a", "b"), c("a", "b", "a", "b"))
#> [1] 1 2