Я пытаюсь создать подмножество кадра данных из статей новостей, в которых упоминается хотя бы один элемент набора ключевых слов или фраз.Найти совпадения вектора строк в другом векторе строк
# 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
Учитывая вектор ключевых слов, подмножество должно содержать строки 1, 2 и 4, так как эти строки содержат один или более из элементов вектора.
%in
Ни ни grepl()
работы, так как %in%
, кажется, требует, чтобы каждое слово в кадре данных векторизовать (articles$text %in% keywords
результатов в четыре FALSE
с), и grep()
, кажется, не быть в состоянии обрабатывать векторизованные шаблоны (grep(keywords, articles$text)
дает оценку ошибка). По-видимому, ни одна из функций не работает хорошо в разных измерениях (т. Е. Легко будет искать одно слово во всех строках, но не все 3 одновременно).
Каков наилучший способ поиска и выбора всех строк фрейма данных, содержащих хотя бы один из элементов вектора ключевого слова?
Что делать, если ключевые слова имеют символы, нужно бежать в них? Нужно ли вручную удалять все специальные символы во всех ключевых словах? – Chill2Macht