2

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?

camille
  • 15,634
  • 17
  • 33
  • 53
Workhorse
  • 1,286
  • 1
  • 13
  • 19

2 Answers2

3

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

akrun
  • 789,025
  • 32
  • 460
  • 575
3

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"    
TarJae
  • 43,365
  • 4
  • 14
  • 40