I have a vector that looks like this:
vector <- c("SPN.subset(RELN).geneset1", "Myeloid.svz.geneset1")
I want to replace "SPN.subset(RELN).geneset1" with "SPN.subset(RELN).caudate.geneset1", but it seems the parantheses aren't allowing this to happen:
e.g
> gsub("SPN.subset(RELN).geneset1", "SPN.subset(RELN).caudate.geneset1", vector)
[1] "SPN.subset(RELN).geneset1" "Myeloid.svz.geneset1"
Any ideas how to fix this?
CodePudding user response:
We may match the closing parentheses, followed by the ., andi. nthe replacement, add the ). followed by the caudate substring
sub("\\)\\.", ").caudate.", vector)
[1] "SPN.subset(RELN).caudate.geneset1" "Myeloid.svz.geneset1"
with gsub/sub, the default option is fixed = FALSE i.e. in regex mode. When it is in regex mode, the () is treated differently i.e. it is a metacharacter to capture group instead of literally evaluating
CodePudding user response:
We could escape the special characters with \\ in the pattern of gsub:
Notice akrun is providing a more general approach!
gsub("SPN.subset\\(RELN\\).geneset1", "SPN.subset(RELN).caudate.geneset1", vector)
[1] "SPN.subset(RELN).caudate.geneset1" "Myeloid.svz.geneset1"
