I know it might be a silly question, but I was curious if there was any difference, I like more using str_detect because the syntax makes more sense in my brain.
Difference between using str_detect() and contains()?
94 views Asked by oliver At
2
There are 2 answers
0
cravetheflame
On
Most importantly, contains() can only be used in a select statement. str_detect() can be used in any kind of statement, see @jpsmith's answer.
Furthermore, as mentioned in the documentation of tidyselect::contains():
[...]
contains(): Contains a literal string.
[...]
starts_with(),ends_with(), andcontains()do not use regular expressions. [...]
[...] For
starts_with(),ends_with(), andcontains()this is an exact match.
Whereas, in the documentation of stringr::str_detect :
pattern : Pattern to look for. The default interpretation is a regular expression.
Related Questions in R
- How to make an R Shiny app with big data?
- How do I keep only specific rows based on whether a column has a specific value?
- Likert scale study - ordinal regression model
- Extract a table/matrix from R into Excel with same colors and stle
- How can I solve non-conformable arguments in R netmeta::discomb (Error in B.matrix %*% C.matrix)?
- Can raw means and estimated marginal means be the same ? And when?
- Understanding accumulate function when .dir is set to "backwards"
- Error in if (nrow(peaks) > 0) { : argument is of length zero Calls: CopywriteR ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous> Execution ha
- How to increase quality of mathjax output?
- Convert the time intervals to equal hours and fill in the value column
- How to run an R function getpoints() from IPDfromKM package in an R shiny app which in R pops up a plot that utilizes clicks to capture coordinates?
- Replace NA in list of dfs in certain columns and under certain conditions
- R and text on Cyrillic
- The ts() function in R is returning the correct start and frequency but not end value which is 1 and not 179
- TROUBLING with the "DROP_NA" Function
Related Questions in DPLYR
- Convert the time intervals to equal hours and fill in the value column
- Subsetting rows with sequence of values and identifying columns where sequence begins
- How to change the order of rows?
- Re-arrange rows by longest interval between starttime and endtime
- Mutate based on a condition
- How to iteratively create matrices/vectors from columns/unique row values of dataframe, and pass them to subsequent code?
- In R, how to place error bars at each bar which is stacked, particularly when using facet_grid?
- filter() function not working within the for loop
- matching metadata on multiple nested data frames
- Write custom lazy evaluation function like dbplyr to get SQL
- Why can't I cut a buffer, both in R and QGIS?
- I want to summarize a huge data frame in R in such a way that I only need unique "lat", "lon", "Date (Year)" and "Maxium Value"
- Alternatives for distinct(.keep_all = TRUE) in arrow?
- sparklyr group by mutate with n_distinct
- Order rows by type of character
Related Questions in STRINGR
- Is there a R code that can detect and separate strings containing characters that are similar?
- Create a flexible key for merge in R
- Extracting character sequences from text using the stringr package in R
- Difference between using str_detect() and contains()?
- Catching a pattern anywhere within a string in R
- str_replace_all by grouping
- How to extract multiple numbers between a repeating pattern using stringr?
- Replace multiple patterns with different replacements in R
- Removing second or third occurrence of a pattern from a string
- Regex that extracts values between specific characters at beginning and end of string
- Extracting observations from one dataframe to populate another
- How to create a column that calculates the difference between two columns for a series of rows that have matching values for two other columns
- How can I extract some information from variable labels using map and str_remove_all in R
- tidyverse/dplyr solution for str_detect case/mutate
- Trying to loop over list of patterns in str_detect( )
Related Questions in TIDYSELECT
- Difference between using str_detect() and contains()?
- How can I use tidyselect to pass an array of symbols like pivot_longer?
- mutate_at with all_of() in r?
- R gt table - Exclude NA values from text transform
- What is the recommended alternative for the deprecated .data[[ ]] in mutate()?
- gt R package cells_summary row conditions issue
- Anonymous function in summarise() with pick(everything()) gives: error in pick() Can't subset columns past the end
- `dplyr::select()` with tidyselection but not error if column doesn't exist
- Specify a column type across multiple columns with tidy-selection in readr package
- How to select row/column variables starting with a particular set of characters (e.g., Q4) in R package expss?
- dplyr rowwise summarise by column, grouped by name
- Unable to add primary keys to existing data model object
- select_if throwing error with second condition
- Select columns using starts_with()
- How to scale up a transmute in tidyverse?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Yes there are substantial differences. First,
contains()is a "selection helper" that must be used within a (generally tidyverse) selecting function.So you cant work with vectors or use
contains()as a standalone function - ie, you can't do:Or you get the error:
Whereas
stringr::str_detectcan work with vectors and as a standalone function:Returns:
Secondly,
stringr::str_detect()allows for regex, andtidyselect::containsonly looks for literal strings.So for example, the below works
But this does not:
(
\\dis the R regex for "any digit")Additionally, as noted by @abagail,
containslooks at column names, not at the values stored within the columns. For instance,df %>% filter(contains("1"))worked above to return the columncol1(since there was a "1" in the column name). But trying tofilteron the values that contain a certain pattern does not work:Returns the same error:
But you can filter on the values in the columns using
stringr::str_detect():Lastly, if you are looking for similar functions outside of
stringr, sincetidyselect::matches()will accept regex, @GregorThomas aptly points out in the comments,str_detectis also equivalent to base R'sgrepl, though the orientation of the pattern and string are reversed (ie,str_detect(string, pattern)is equivalent togrepl(pattern, string)