这是一种只使用sub的方法
sub("\\b(?=&)|(?<=&)\\b", " ", v1, perl = TRUE)
#[1] "Smith & Banks" "Smith & Banks"
使用具有更多组合的数据。在上面,我只考虑了 OP 帖子中显示的选项。
gsub("\\s*(?=&)|(?<=&)\\s*", " ", data, perl = TRUE)
#[1] "Smith & Banks" "Smith & Banks" "Smith & Banks" "Smith & Banks" "Smith & Banks"
gsub("\\s*&+|\\&+\\s*", " & ", data1)
#[1] "Smith & Banks" "Smith & Banks" "Smith & Banks"
#[4]"Smith & Banks" "Smith & Banks" "Smith & Banks" "Smith & Banks"
或strsplit
sapply(strsplit(data1, "\\s*&+\\s*"), paste, collapse = " & ")
#[1] "Smith & Banks" "Smith & Banks" "Smith & Banks" "Smith & Banks"
#[5] "Smith & Banks" "Smith & Banks" "Smith & Banks"
本质上,如果有很多模式,strsplit 方法会更好。
数据
v1 <- c("Smith& Banks", "Smith &Banks")
data = c("Smith& Banks", "Smith &Banks", "Smith & Banks",
"Smith & Banks", "Smith&Banks")
data1 <- c(v1, "Smith&& Banks", "Smith && Banks", "Smith&&Banks")