Find rows where one column string is in another column using dplyr in R

dplyr, grepl, r, regex

Solution

You can either apply the function to both vectors using `Map` or iterate through the row using `sapply`

df %>%
  filter(unlist(Map(function(x, y) grepl(x, y), A, B)))
    A                 B
1 cat cat in the cradle
2 boy   boy mmets world

df %>%
  filter(sapply(1:nrow(.), function(i) grepl(A[i], B[i])))
    A                 B
1 cat cat in the cradle
2 boy   boy mmets world

Problem

Looking to pull back rows where the value in one column exists as a string in another column (within the same row). I have a df: ``` A <- c("cat", "dog", "boy") B <- c("cat in the cradle", "meet the parents", "boy mmets world") df <- as.data.frame(A, B) A B cat cat in the cradle dog meet the parents boy boy meets world ``` I'm trying things like: ``` df2 <- df %>% filter(grepl(A, B)) # doesn't work because it thinks A is the whole column vector df2 <- df %>% filter(B %in% A) # which doesn't work because it has to be exact ``` I want it to produce ``` A B cat cat in the cradle boy boy meets world ``` Thanks in advance! Matt

Original source