一連のキーワードまたはフレーズの少なくとも 1 つの要素に言及しているニュース記事のデータ フレームのサブセットを作成しようとしています。
# 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 が含まれている必要があります。これらの行には、ベクトルの要素が 1 つ以上含まれているからです。
どちら%in
もgrepl()
機能しません%in%
。データ フレーム内の各単語をベクトル化する必要があるようで (articles$text %in% keywords
結果は 4FALSE
秒になります)、grep()
ベクトル化されたパターンを処理できないようです (grep(keywords, articles$text)
エラーが発生します)。どちらの関数だけでも、複数の次元でうまく機能しないようです (つまり、すべての行で 1 つの単語を検索するのは簡単ですが、同時に 3 つすべてを検索することはできません)。
キーワード ベクトルの要素の少なくとも 1 つを含むデータ フレームのすべての行を見つけて選択する最良の方法は何ですか?