Encontrar coincidencias de un vector de cadenas en otro vector de cadenas

Estoy tratando de crear un subconjunto de un marco de datos de artículos de noticias que mencionan al menos un elemento de un conjunto de palabras clave o frases.

# Sample data frame of articles
articles <- data.frame(id=c(1, 2, 3, 4), text=c("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod", "tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,", "quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo", "consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse"))
articles$text <- as.character(articles$text)

# Sample vector of keywords or phrases
keywords <- as.character(c("elit", "tempor incididunt", "reprehenderit"))

#   id                                                                         text
# 1  1     Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
# 2  2 tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
# 3  3      quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
# 4  4    consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse

Dado el vector de palabras clave, el subconjunto debe contener las filas 1, 2 y 4, ya que esas filas contienen uno o más de los elementos del vector.

Ninguno%in nigrepl() trabajo, desde%in% parece requerir que cada palabra en el marco de datos sea vectorizada (articles$text %in% keywords resultados en cuatroFALSEs), ygrep() parece no ser capaz de manejar patrones vectorizados (grep(keywords, articles$text) da un error). Ninguna de las dos funciones por sí sola parece funcionar bien en múltiples dimensiones (es decir, sería fácil buscar una palabra en todas las filas, pero no las 3 al mismo tiempo).

¿Cuál es la mejor manera de encontrar y seleccionar todas las filas del marco de datos que contienen al menos uno de los elementos del vector de palabras clave?

Respuestas a la pregunta(1)

Su respuesta a la pregunta