2

重複の可能性:
条件付き gsub 置換

文字ベクトルの特定の要素を定義済みの置換で置き換えるにはどうすればよいですか?

county <- c("wagner", "mccain", "mcclain", "dallas")

pattern     <- c("mccain",  "mcclain",   "mcdonald")
replacement <- c("mc cain", "mc clain",  "mc donald")

library(stringr)
str_replace(county, pattern, replacement)

これは単純なはずですが、私は長い間いじっていて、理解できません。どんな援助でも大歓迎です。

4

1 に答える 1

1

私があなたの質問を正しく理解しているなら、あなたは正規表現を使って検索と置換をしたくないでしょう(gsub例えば経由で)。その点で、変数名の使用はpattern誤解を招く可能性があります。

代わりに、完全に一致する単純な置換を実行するだけです。あなたは使用する必要がありmatchますifelse

ifelse(is.na(idx <- match(county, pattern)), county, replacement[idx])
# [1] "wagner"   "mc cain"  "mc clain" "dallas"

これを関数に入れることもできます:

substitute.all <- function(pattern, replacement, x) {
   idx <- match(x, pattern)
   return(ifelse(is.na(idx), x, replacement[idx]))
}
substitute.all(pattern, replacement, county)
# [1] "wagner"   "mc cain"  "mc clain" "dallas"  
于 2012-09-07T19:18:03.687 に答える