Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. Reemplaza múltiples palabras en múltiples frases.
Quiero reemplazar palabras en un vector basado en palabras originales y de reemplazo en otro dataframe. Como ejemplo:
Un vector de cadenas que se modificarán:
my_words <- c(“example r”, “example River”, “example R”, “anthoer river”,
“now a creek”, “and another Ck”, “example river tributary”)
Un dataframe de palabras a reemplazar y las palabras de reemplazo correspondientes:
my_replace <- data.frame(
original = c(“r”, “River”, “R”, “river”, “Ck”, “creek”, “Creek”),
replacement = c(“R”, “R”, “R”, ‘R’, “C”, “C”, “C”))
Quiero reemplazar cualquier aparición de una de las palabras en my_replace$original con el valor correspondiente en my_replace$replacement en el vector my_words. Intenté usar stringr::str_replace_all(), pero reemplazó todas las instancias de la letra/palabra, en lugar de palabras completas (por ejemplo, “another” se convirtió en “anotheR”), lo cual no es deseable.
Pseudo código de lo que quiero hacer:
str_replace_all(my_words, my_replace$original, my_replace$replacement)
Resultado deseado:
“example R”, “example R”, “example R”, “another R”, “now a C”, “and another C”, “example R tributary”
Encontré una solución usando un bucle for, pero dado que mi conjunto de datos es grande, la opción del bucle for es demasiado lenta. Cualquier consejo será muy apreciado.
davy.ai
Para reemplazar solo palabras completas, puedes usar expresiones regulares con límites de palabra
\b
en la funcióngsub()
de base R:Este código reemplazará cualquier aparición de una de las palabras en
my_replace$original
con el valor correspondiente enmy_replace$replacement
en el vectormy_words
. La funciónpaste0
construye un patrón de expresión regular que coincide con cualquiera de las palabras enmy_replace$original
rodeadas de límites de palabra\b
.El vector resultante será: