str_contains {sjmisc}R Documentation

Check if string contains pattern

Description

This functions checks whether a string or character vector x contains the string pattern. By default, this function is case sensitive.

Usage

str_contains(x, pattern, ignore.case = FALSE, logic = NULL, switch = FALSE)

Arguments

x

Character string where matches are sought. May also be a character vector of length > 1 (see 'Examples').

pattern

Character string to be matched in x. May also be a character vector of length > 1 (see 'Examples').

ignore.case

Logical, whether matching should be case sensitive or not.

logic

Indicates whether a logical combination of multiple search pattern should be made.

  • Use "or", "OR" or "|" for a logical or-combination, i.e. at least one element of pattern is in x.

  • Use "and", "AND" or "&" for a logical AND-combination, i.e. all elements of pattern are in x.

  • Use "not", "NOT" or "!" for a logical NOT-combination, i.e. no element of pattern is in x.

  • By default, logic = NULL, which means that TRUE or FALSE is returned for each element of pattern separately.

switch

Logical, if TRUE, x will be sought in each element of pattern. If switch = TRUE, x needs to be of length 1.

Details

This function iterates all elements in pattern and looks for each of these elements if it is found in any element of x, i.e. which elements of pattern are found in the vector x.

Technically, it iterates pattern and calls grep(x, pattern[i], fixed = TRUE) for each element of pattern. If switch = TRUE, it iterates pattern and calls grep(pattern[i], x, fixed = TRUE) for each element of pattern. Hence, in the latter case (if switch = TRUE), x must be of length 1.

Value

TRUE if x contains pattern.

Examples

str_contains("hello", "hel")
str_contains("hello", "hal")

str_contains("hello", "Hel")
str_contains("hello", "Hel", ignore.case = TRUE)

# which patterns are in "abc"?
str_contains("abc", c("a", "b", "e"))

# is pattern in any element of 'x'?
str_contains(c("def", "abc", "xyz"), "abc")
# is "abcde" in any element of 'x'?
str_contains(c("def", "abc", "xyz"), "abcde") # no...
# is "abc" in any of pattern?
str_contains("abc", c("defg", "abcde", "xyz12"), switch = TRUE)

str_contains(c("def", "abcde", "xyz"), c("abc", "123"))

# any pattern in "abc"?
str_contains("abc", c("a", "b", "e"), logic = "or")

# all patterns in "abc"?
str_contains("abc", c("a", "b", "e"), logic = "and")
str_contains("abc", c("a", "b"), logic = "and")

# no patterns in "abc"?
str_contains("abc", c("a", "b", "e"), logic = "not")
str_contains("abc", c("d", "e", "f"), logic = "not")

[Package sjmisc version 2.8.10 Index]