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 best solutions below
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
- Remove part of the string in json document using str replace for many records
- Regex to remove .csv in r
- Count Unique Occurrences In Text String In R
- Using str_match in R to check for numbers seperated by "_"
- Removing a string using regular expression with stringr
- Atomic vector error when using R package `stringr`
- Why does is this end of line (\\b) not recognised as word boundary in stringr/ICU and Perl
- Subset data based on pentad dates with leap year
- String Splitting and Truncating using Regular Expressions in R
- Find pattern in URL with stringr and regex
- Extract only words containing ASCII characters from vector of strings
- Text Extraction in R with stringi package
- Converting List to Vector using Tidyverse
- strsplit in R using | as the pattern
- how to extract sub strings from a string like "Airport West 1/26 Cameron St 3 br t $830000 S Nelson Alexander" using r and stringr
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?
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)
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?
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)