Лучший вариант для массового поиска / замены строк, чем stri_replace_all_fixed? - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь заменить несколько значений из таблицы поиска в символьных векторах в кадре данных в R. Вот что находится в таблице поиска:

original|replace
a.com / A, b.com / B
c.com / C, d.com / D
...

Я стремлюсь заменить это в фрейм данных, содержащий строки в тексте:

Today a.com / A announced that it's filing for bankruptcy. a.com / A was recently purchased by Bob Evans.

Предполагаемый результат:

Today b.com / B announced that it's filing for bankruptcy. b.com / B was recently purchased by Bob Evans.

Это моя текущая попытка, но не удалось выполнить ни одну из замен:

library(stringi)
quotemeta <- function(string) {
  ## removes all but alphanumerics
  str_replace_all(string, "(\\W)", "\\\\\\1")
}
lookup <- read_csv("lookup.csv")
patterns <- quotemeta(lookup$original)
replacements <- quotemeta(lookup$replace)

  df <- df %>%
    mutate_all(list(
      ~ stri_replace_all_fixed(.,
                               patterns,
                               replacements, vectorize_all = F)
    ))

Итак, два вопроса:

  1. Почему это не работает?
  2. Есть ли способ лучше?
...