Я пытаюсь заменить несколько значений из таблицы поиска в символьных векторах в кадре данных в 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)
))
Итак, два вопроса:
- Почему это не работает?
- Есть ли способ лучше?