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

nik*_*UoM 4 regex grep r gsub

我正在运行一个字符向量(大约10,000个条目),它有很多信息我希望丢弃,但我想保留相当多的信息.我想要保留的信息必须匹配另一个字符向量中的给定字符串.因此,这将是matching_points包含满足匹配条件的参数的向量:

matching_points <- "house|techno|pop|jazz|dreampop|artrock"
Run Code Online (Sandbox Code Playgroud)

这将是我想要清理的矢量:

music <- c("tropical house", "tech house", "funk", "hardcore", "hard rock", "pop", "dream pop", "free jazz")
Run Code Online (Sandbox Code Playgroud)

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

[1] "house"  "house"  ""  ""  ""  "pop"  "pop"  "jazz" 
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何做到这一点会很棒 - 我怀疑有一个简单的选项可以应用于该gsub过程以反转过程,即保持匹配的东西并用其他所有东西替换"".

Sot*_*tos 5

你可以试试stringr,

library(stringr) 
str_extract(music, matching_points)
#[1] "house" "house" NA      NA      NA      "pop"   "pop"   "jazz" 
Run Code Online (Sandbox Code Playgroud)