Bird
Raised Fist0
R Programmingprogramming~5 mins

grep and grepl in R Programming - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the grep() function do in R?

grep() searches for patterns in a character vector and returns the indices of the elements that match the pattern.

Click to reveal answer
beginner
How is grepl() different from grep()?

grepl() returns a logical vector (TRUE or FALSE) indicating if the pattern was found in each element, while grep() returns the indices of matching elements.

Click to reveal answer
beginner
What will grep("cat", c("cat", "dog", "caterpillar")) return?

It will return 1 3 because "cat" is found in the 1st and 3rd elements.

Click to reveal answer
beginner
What does grepl("dog", c("cat", "dog", "caterpillar")) return?

It returns FALSE TRUE FALSE showing which elements contain "dog".

Click to reveal answer
intermediate
Can grep() and grepl() use regular expressions?

Yes, both functions support regular expressions to find complex patterns in text.

Click to reveal answer
What does grep() return when it finds matches?
AThe matching text itself
BLogical vector of TRUE/FALSE
CNumber of matches
DIndices of matching elements
Which function returns a logical vector indicating matches?
Agrepl()
Bgrep()
Cgsub()
Dsub()
What will grepl("a", c("apple", "banana", "cherry")) return?
A[TRUE, TRUE, FALSE]
B[FALSE, TRUE, TRUE]
C[TRUE, FALSE, TRUE]
D[FALSE, FALSE, FALSE]
If you want to get the actual matching text, which function should you use?
Agrep()
Bgrepl()
Cregmatches() with regexpr()
Dgrepl() with invert = TRUE
Can grep() and grepl() handle case-insensitive searches?
ANo, they are case-sensitive only
BYes, by setting <code>ignore.case = TRUE</code>
COnly <code>grep()</code> can
DOnly <code>grepl()</code> can
Explain the difference between grep() and grepl() in R.
Think about what each function returns when you search text.
You got /4 concepts.
    How can you use grep() or grepl() to find if a word exists in a list of strings?
    Consider what output you want: positions or logical answers.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the grepl function in R return when searching for a pattern in a character vector?
      easy
      A. The matching elements themselves
      B. The positions of elements matching the pattern
      C. A logical vector indicating TRUE or FALSE for each element
      D. The count of matches found

      Solution

      1. Step 1: Understand the purpose of grepl

        grepl checks each element of a vector and returns TRUE if the pattern is found, otherwise FALSE.
      2. Step 2: Compare with other functions

        grep returns positions or values, but grepl returns logical TRUE/FALSE values for each element.
      3. Final Answer:

        A logical vector indicating TRUE or FALSE for each element -> Option C
      4. Quick Check:

        grepl returns logical vector [OK]
      Hint: Remember: grepl gives TRUE/FALSE, grep gives positions [OK]
      Common Mistakes:
      • Confusing grepl with grep output
      • Expecting grepl to return matching values
      • Thinking grepl returns counts
      2. Which of the following is the correct syntax to find the positions of elements containing the word "apple" in vector fruits using grep ignoring case?
      easy
      A. grep("apple", fruits, ignore.case = TRUE)
      B. grepl("apple", fruits, ignore.case = TRUE)
      C. grep(fruits, "apple", ignore.case = TRUE)
      D. grepl(fruits, "apple", ignore.case = TRUE)

      Solution

      1. Step 1: Identify correct argument order for grep

        The first argument is the pattern, second is the vector to search.
      2. Step 2: Check function name and parameters

        grep("apple", fruits, ignore.case = TRUE) correctly searches for "apple" ignoring case and returns positions.
      3. Final Answer:

        grep("apple", fruits, ignore.case = TRUE) -> Option A
      4. Quick Check:

        Pattern first, vector second in grep [OK]
      Hint: Pattern goes first, vector second in grep [OK]
      Common Mistakes:
      • Swapping pattern and vector arguments
      • Using grepl instead of grep for positions
      • Omitting ignore.case parameter
      3. What is the output of the following R code?
      words <- c("Cat", "dog", "caterpillar", "Dogma")
      grep("dog", words, ignore.case = TRUE)
      medium
      A. [1] TRUE TRUE FALSE FALSE
      B. [2] 2 4
      C. [1] "dog" "Dogma"
      D. [1] 2 4

      Solution

      1. Step 1: Understand grep output

        grep returns positions of elements matching the pattern.
      2. Step 2: Identify matching elements ignoring case

        "dog" matches "dog" (position 2) and "Dogma" (position 4) ignoring case.
      3. Final Answer:

        [1] 2 4 -> Option D
      4. Quick Check:

        grep returns positions [1] 2 4 [OK]
      Hint: grep returns positions, not values or logicals [OK]
      Common Mistakes:
      • Expecting matching values instead of positions
      • Confusing grep with grepl output
      • Misreading output format with index labels
      4. The following code is intended to return a logical vector indicating which elements contain "blue" ignoring case, but it gives an error. What is the error?
      colors <- c("Blue", "red", "green", "BLUE")
      grepl(colors, "blue", ignore.case = TRUE)
      medium
      A. ignore.case is not a valid argument for grepl
      B. The pattern and vector arguments are swapped in grepl
      C. colors vector contains uppercase letters causing error
      D. grepl cannot be used with character vectors

      Solution

      1. Step 1: Check argument order for grepl

        grepl expects pattern first, then the vector to search.
      2. Step 2: Identify swapped arguments in code

        The code uses grepl(colors, "blue", ignore.case = TRUE) which swaps pattern and vector.
      3. Final Answer:

        The pattern and vector arguments are swapped in grepl -> Option B
      4. Quick Check:

        Pattern first, vector second in grepl [OK]
      Hint: Pattern always comes first in grepl [OK]
      Common Mistakes:
      • Swapping pattern and vector arguments
      • Thinking ignore.case is invalid
      • Assuming case in vector causes error
      5. You have a vector names <- c("Anna", "Annie", "Annette", "Bob", "An"). You want to find all names that start with "Ann" ignoring case. Which code correctly returns the matching names?
      hard
      A. names[grepl("^Ann", names, ignore.case = TRUE)]
      B. grep("Ann", names, ignore.case = TRUE)
      C. names[grep("Ann", names)]
      D. grepl(names, "^Ann", ignore.case = TRUE)

      Solution

      1. Step 1: Use grepl with pattern and vector correctly

        To filter names starting with "Ann", use grepl("^Ann", names, ignore.case = TRUE) which returns TRUE for matching elements.
      2. Step 2: Subset names vector using logical vector

        Use names[logical_vector] to get matching names.
      3. Final Answer:

        names[grepl("^Ann", names, ignore.case = TRUE)] -> Option A
      4. Quick Check:

        grepl + logical indexing filters names [OK]
      Hint: Use grepl with ^ for start and subset vector [OK]
      Common Mistakes:
      • Using grep without subsetting vector
      • Swapping pattern and vector in grepl
      • Not using ^ to match start of string
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard