我正在尝试部分替换名为“string1”的字符串中的文本。
“LocateMe”中包含多种模式,我想查找并替换为相同的文本字符串:“!= -9999”
多个模式非常复杂,包含特殊字符,例如“=”和“[”
是否可以使用gsub
实现此目的,还是应该使用其他功能?任何指导都将不胜感激。
string1 <- "Birth == unique.combos[17,1] & hid_age == unique.combos[17,2] & z02_gender == unique.combos[17,3]"
LocateMe <- c("== unique.combos[37,1]", "== unique.combos[38,1]", "== unique.combos[39,1]", "== unique.combos[40,1]", "== unique.combos[41,1]", "== unique.combos[42,1]",
"== unique.combos[17,1]", "== unique.combos[17,3]", "== unique.combos[18,3]")
string2 <- gsub(LocateMe, "!= -9999", string1)
答案 0 :(得分:1)
gsub
不会在搜索字符串上进行矢量化,它一次只能使用一个。所以你需要使用像
string2 <- string1
for (i in seq_along(LocateMe)) {
string2 <- gsub(LocateMe[i], "!= -9999", string2, fixed = TRUE)
}
使用fixed = T
可以防止括号,逗号和点被解释为特殊字符。
我还会说,几乎可以肯定有更好的方法来做你在R中尝试做的事情而不是使用gsub
进行查找/替换,可能后面跟着一些{{1 }} ING。这将很难调试,难以扩展。