Znajdź dopasowania wektora ciągów w innym wektorze łańcuchów

Próbuję utworzyć podzbiór ramki danych artykułów prasowych, które wymieniają przynajmniej jeden element zestawu słów kluczowych lub fraz.

# 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

Biorąc pod uwagę wektor słów kluczowych, podzbiór powinien zawierać wiersze 1, 2 i 4, ponieważ wiersze te zawierają jeden lub więcej elementów wektora.

Ani%in anigrepl() praca, ponieważ%in% wydaje się wymagać, aby każde słowo w ramce danych było wektoryzowane (articles$text %in% keywords daje czteryFALSEs), igrep() wydaje się, że nie jest w stanie obsłużyć wektorów (grep(keywords, articles$text) daje błąd). Wydaje się, że żadna z tych funkcji nie działa dobrze w wielu wymiarach (tj. Łatwo byłoby wyszukać jedno słowo we wszystkich wierszach, ale nie wszystkie 3 w tym samym czasie).

Jaki jest najlepszy sposób na znalezienie i wybranie wszystkich wierszy ramki danych zawierających co najmniej jeden z elementów wektora słów kluczowych?

questionAnswers(1)

yourAnswerToTheQuestion