如何用定义的替换替换字符向量的certian元素?
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)
看起来这应该很简单,但我已经搞乱了很长时间而且无法弄明白。非常感谢任何帮助。
答案 0 :(得分: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"