Convenient wrapper around grepl() to match a pattern: x %like% pattern. It always returns a logical vector and is always case-insensitive (use x %like_case% pattern for case-sensitive matching). Also, pattern can be as long as x to compare items of each index in both vectors, or they both can have the same length to iterate over all cases.
like(x, pattern, ignore.case = TRUE)
x %like% pattern
x %unlike% pattern
x %like_case% pattern
x %unlike_case% patternIdea from the like function from the data.table package, although altered as explained in Details.
a character vector where matches are sought, or an object which can be coerced by as.character() to a character vector.
a character vector containing regular expressions (or a character string for fixed = TRUE) to be matched in the given character vector. Coerced by as.character() to a character string if possible.
if FALSE, the pattern matching is case sensitive and if TRUE, case is ignored during matching.
A logical vector
These like() and %like%/%unlike% functions:
Are case-insensitive (use %like_case%/%unlike_case% for case-sensitive matching)
Support multiple patterns
Check if pattern is a valid regular expression and sets fixed = TRUE if not, to greatly improve speed (vectorised over pattern)
Always use compatibility with Perl unless fixed = TRUE, to greatly improve speed
Using RStudio? The %like%/%unlike% functions can also be directly inserted in your code from the Addins menu and can have its own keyboard shortcut like Shift+Ctrl+L or Shift+Cmd+L (see menu Tools > Modify Keyboard Shortcuts...). If you keep pressing your shortcut, the inserted text will be iterated over %like% -> %unlike% -> %like_case% -> %unlike_case%.
a <- "This is a test"
b <- "TEST"
a %like% b
#> [1] TRUE
b %like% a
#> [1] FALSE
# also supports multiple patterns
a <- c("Test case", "Something different", "Yet another thing")
b <- c( "case", "diff", "yet")
a %like% b
#> [1] TRUE TRUE TRUE
a %unlike% b
#> [1] FALSE FALSE FALSE
a[1] %like% b
#> [1] TRUE FALSE FALSE
a %like% b[1]
#> [1] TRUE FALSE FALSE