5

文字列 A が単語全体 (例: "MECH") である場合にのみ、文字列 A を文字列 B に置き換える必要があり、A が長い文字列 (例: "MECHANICAL") の一部である場合は、置換を行いたくありません。 . これまでのところ、文字列 A が文字列全体であるかどうかを確認する grepl() がありますが、置換の方法がわかりません。grep() が TRUE を返した場合に gsub() を置換し、それ以外の場合は置換しないという考えで ifelse() を追加しました。助言がありますか?以下のコードを参照してください。ありがとう。

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)
4

3 に答える 3

0

正規表現を使用(?<=\W|^)MECH(?=\W|$)して、文字列内に MECH のような単語全体が含まれているかどうかを取得します

それはあなたが必要とするものですか?

于 2013-08-15T13:09:46.337 に答える