Encontrar correspondências de um vetor de strings em outro vetor de strings

Eu estou tentando criar um subconjunto de um quadro de dados de artigos de notícias que mencionam pelo menos um elemento de um conjunto de palavras-chave ou 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 o vetor de palavras-chave, o subconjunto deve conter as linhas 1, 2 e 4, pois essas linhas contêm um ou mais elementos do vetor.

Nem%in nemgrepl() trabalho, desde%in% parece exigir que cada palavra no quadro de dados seja vetorizada (articles$text %in% keywords resulta em quatroFALSEareiagrep() não parece ser capaz de lidar com padrões vetorizados (grep(keywords, articles$text) dá um erro). Nenhuma função sozinha parece funcionar bem em várias dimensões (por exemplo, seria fácil procurar uma palavra em todas as linhas, mas não todas as 3 ao mesmo tempo).

Qual é a melhor maneira de encontrar e selecionar todas as linhas do quadro de dados que contenham pelo menos um dos elementos do vetor de palavras-chave?

questionAnswers(1)

yourAnswerToTheQuestion