Convenient wrapper around grep to match a pattern: a %like% b. It always returns a logical vector and is always case-insensitive. Also, pattern (b) can be as long as x (a) to compare items of each index in both vectors.

like(x, pattern)

x %like% pattern

Arguments

x

a character vector where matches are sought, or an object which can be coerced by as.character to a character vector. Long vectors are supported.

pattern

character string containing a regular expression (or character string for fixed = TRUE) to be matched in the given character vector. Coerced by as.character to a character string if possible. If a character vector of length 2 or more is supplied, the first element is used with a warning. Missing values are allowed except for regexpr and gregexpr.

Source

Idea from the like function from the data.table package, but made it case insensitive at default and let it support multiple patterns.

Value

A logical vector

Details

Using RStudio? This function can also be inserted from the Addins menu and can have its own Keyboard Shortcut like Ctrl+Shift+L or Cmd+Shift+L (see Tools > Modify Keyboard Shortcuts...).

See also

Examples

# NOT RUN {
# simple test
a <- "This is a test"
b <- "TEST"
a %like% b
#> TRUE
b %like% a
#> FALSE

# also supports multiple patterns, length must be equal to x
a <- c("Test case", "Something different", "Yet another thing")
b <- c("case", "diff", "yet")
a %like% b
#> TRUE TRUE TRUE

# get frequencies of bacteria whose name start with 'Ent' or 'ent'
library(dplyr)
septic_patients %>%
  left_join_microorganisms() %>%
  filter(genus %like% '^ent') %>%
  freq(genus, species)
# }