R - 反转 gsub:只保留与 gsub 参数的匹配

R - invert gsub: keep only matches with gsub argument

我 运行 通过一个字符向量(大约 10,000 个条目),其中有很多我想丢弃的信息,但我想保留的信息也不少。我要保留的信息必须与另一个字符向量中的给定字符串相匹配。因此,这将是包含满足匹配条件的参数的 matching_points 向量:

matching_points <- "house|techno|pop|jazz|dreampop|artrock"

这就是我要清理的向量:

music <- c("tropical house", "tech house", "funk", "hardcore", "hard rock", "pop", "dream pop", "free jazz")

通过清理操作,我希望矢量 music 看起来像这样

[1] "house"  "house"  ""  ""  ""  "pop"  "pop"  "jazz" 

如果有人知道我该怎么做就太好了 - 我怀疑有一个简单的选项可以应用于 gsub 过程以反转过程,即保留那些东西匹配并用 "".

替换其他所有内容

你可以试试stringr,

library(stringr) 
str_extract(music, matching_points)
#[1] "house" "house" NA      NA      NA      "pop"   "pop"   "jazz"