文字列Aが文字列A(たとえば "MECH")の場合にのみ文字列Aを文字列Bに置き換える必要があり、Aが部分である場合に置き換えたくないより長い文字列(例えば、 "MECHANICAL")。今のところ、文字列Aが文字列全体であるかどうかを調べるgrepl()がありますが、置換の方法を理解することはできません。 grep()がTRUEを返すときにgsub()の置き換えを行うという考えでifelse()を追加しました。そうでなければ置き換えません。助言がありますか?以下のコードをご覧ください。ありがとう。私は文字列内thisのような単語全体のMECHが含まれている場合、取得するために正規表現を使用し(?<=\W|^)MECH(?=\W|$)
条件付きで検索して置換する正規表現
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に気付きました。それはMECHを置き換えませんでした。それはありますか? –