Reputation: 11934
stringr package provides good string functions.
To search for a string (ignoring case)
one could use
stringr::str_detect('TOYOTA subaru',ignore.case('toyota'))
This works but gives warning
Please use (fixed|coll|regex)(x, ignore_case = TRUE) instead of ignore.case(x)
What is the right way of rewriting it?
Upvotes: 60
Views: 46290
Reputation: 457
Or you can erase all capitalization while you search:
str_detect(tolower('TOYOTA subaru'), 'toyota')
Upvotes: 3
Reputation: 214927
You can use regex
(or fixed
as suggested in @lmo's comment depending on what you need) function to make the pattern as detailed in ?modifiers or ?str_detect (see the instruction for pattern parameter):
library(stringr)
str_detect('TOYOTA subaru', regex('toyota', ignore_case = T))
# [1] TRUE
Upvotes: 68
Reputation: 2143
You can save a little typing with (?i)
:
c("Toyota", "my TOYOTA", "your Subaru") %>%
str_detect( "(?i)toyota" )
# [1] TRUE TRUE FALSE
Upvotes: 51
Reputation: 23014
You can use the base R function grepl()
to accomplish the same thing without a nested function. It simply accepts ignore.case
as an argument.
grepl("toyota", 'TOYOTA subaru', ignore.case = TRUE)
(Note that the order of the first two arguments (pattern and string) are switched between grepl
and str_detect
).
Upvotes: 8
Reputation: 11934
the search string must be inside function fixed
and that function has valid parameter ignore_case
str_detect('TOYOTA subaru', fixed('toyota', ignore_case=TRUE))
Upvotes: 31