我需要用字符串 B 替换字符串 A,仅当字符串 A 是一个完整的单词(例如“MECH”)时,我不想在 A 是较长字符串的一部分时进行替换(例如“MECHANICAL”) . 到目前为止,我有一个 grepl() 来检查字符串 A 是否是一个完整的字符串,但我不知道如何进行替换。我添加了一个 ifelse(),其想法是在 grep() 返回 TRUE 时进行 gsub() 替换,否则不替换。有什么建议么?请看下面的代码。谢谢。
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)