【问题标题】:Replace string containing parantheses [duplicate]替换包含括号的字符串[重复]
【发布时间】:2021-12-01 10:23:50
【问题描述】:

我有一个看起来像这样的向量:

vector <- c("SPN.subset(RELN).geneset1", "Myeloid.svz.geneset1")

我想用"SPN.subset(RELN).caudate.geneset1" 替换"SPN.subset(RELN).geneset1",但似乎括号不允许这种情况发生:

例如

> gsub("SPN.subset(RELN).geneset1", "SPN.subset(RELN).caudate.geneset1", vector)
[1] "SPN.subset(RELN).geneset1" "Myeloid.svz.geneset1"  

任何想法如何解决这个问题?

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以匹配右括号,然后是.,andi。替换,添加).,后跟caudate子字符串

    sub("\\)\\.", ").caudate.", vector)
    [1] "SPN.subset(RELN).caudate.geneset1" "Myeloid.svz.geneset1"         
    

    对于gsub/sub,默认选项是fixed = FALSE,即在正则表达式模式下。当它处于正则表达式模式时,() 的处理方式不同,即它是捕获组的元字符,而不是字面上的评估

    【讨论】:

      【解决方案2】:

      我们可以在gsub 的模式中使用\\ 转义特殊字符: 注意 akrun 提供了一种更通用的方法!

      gsub("SPN.subset\\(RELN\\).geneset1", "SPN.subset(RELN).caudate.geneset1", vector)
      
      [1] "SPN.subset(RELN).caudate.geneset1" "Myeloid.svz.geneset1"    
      

      【讨论】:

      • 除此之外,您也可以使用fixed = TRUE
      猜你喜欢
      • 2017-08-04
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 2019-05-22
      相关资源
      最近更新 更多