R: gsub, pattern = vector and replacement = vector

Lot's of solutions already, here are one more:

The qdap package:

library(qdap)
names(x1) <- mgsub(a,b,names(x1))

From stringr documentation of str_replace_all, "If you want to apply multiple patterns and replacements to the same string, pass a named version to pattern."

Thus using a, b, and names(x1) from above

stringr::str_replace_all(names(x1), setNames(b, a))

EDIT

stringr::str_replace_all calls stringi::stri_replace_all_regex, which can be used directly and is quite a bit quicker.

x <- names(x1)
pattern <- a
replace <- b

microbenchmark::microbenchmark(
  str  = stringr::str_replace_all(x, setNames(replace, pattern)),
  stri = stringi::stri_replace_all_regex(x, pattern, replace, vectorize_all = FALSE)
  )

Unit: microseconds
 expr    min      lq     mean  median   uq    max neval cld
  str 1022.1 1070.45 1286.547 1175.55 1309 2526.8   100   b
 stri  145.2  150.45  190.124  160.55  178  457.9   100  a 

Tags:

R