使用向量而不是R中的regexp从字符串中删除多个单词

时间:2019-05-10 18:46:13

标签: r string vector stringr

我想从R中的字符串中删除多个单词,但想使用字符向量代替正则表达式。

例如,如果我有字符串

"hello how are you" 

并想要删除

c("hello", "how")

我会回来

" are you"

我可以和str_remove()的{​​{1}}亲近

stringr

但是我需要做一些事情来将其归纳为一个字符串。是否有一个函数可以一次调用所有这些功能?

2 个答案:

答案 0 :(得分:2)

我们可以使用|来评估正则表达式,或者

library(stringr)
library(magrittr)
pat <- str_c(words, collapse="|")
"hello how are you" %>% 
      str_remove_all(pat) %>%
      trimws
#[1] "are you"

数据

words <- c("hello", "how")

答案 1 :(得分:1)

base R的可能性可能是:

x <- "hello how are you"   
trimws(gsub("hello|how", "\\1", x))

[1] "are you"

或者,如果您还有更多话语,请@Wimpel提出一个聪明的主意:

words <- paste(c("hello", "how"), collapse = "|")
trimws(gsub(words, "\\1", x))