Мне нужно заменить строку A на строку B, только если строка A является целым словом (например, «MECH»), и я не хочу делать замену, когда A является частью более длинной строки (например, «МЕХАНИЧЕСКИЙ»). До сих пор у меня есть grepl(), который проверяет, является ли строка A цельной строкой, но я не могу понять, как сделать замену. Я добавил ifelse() с идеей сделать замену gsub(), когда grep() возвращает TRUE, иначе не заменяют. Какие-либо предложения? См. Код ниже. Благодарю.Регулярное выражение для поиска и замены условно
aa <- data.frame(type = c("CONSTR", "MECH CONSTRUCTION", "MECHANICAL CONSTRUCTION MECH", "MECH CONSTR", "MECHCONSTRUCTION"))
from <- c("MECH", "MECHANICAL", "CONSTR", "CONSTRUCTION")
to <- c("MECHANICAL", "MECHANICAL", "CONSTRUCTION", "CONSTRUCTION")
gsub2 <- function(pattern, replacement, x, ...) {
for(i in 1:length(pattern)){
reg <- paste0("(^", pattern[i], "$)|(^", pattern[i], ")|(", pattern[i], "$)|(", pattern[i], ")")
ifelse(grepl(reg, aa$type),
x <- gsub(pattern[i], replacement[i], x, ...),
aa$type)
}
x
}
aa$title3 <- gsub2(from, to, aa$type)
Я заметил, что в элементе 5 он не заменил МЕЧ. Должно ли это быть? –