【问题标题】:Problem escaping the parentheses when using str_replace使用 str_replace 时转义括号的问题
【发布时间】:2020-05-22 04:20:53
【问题描述】:

我的问题似乎与此类似:str_replace (package stringr) cannot replace brackets in r?

但希望有人可以帮助我。

以下是一些示例数据:

a<- c(1,2,3,4,5)
b<- c("Home", "Rehab", "Home", "Discharged home or self-care (routine discharge) AHR", "Home")
DF<- data.frame(a,b)

有数百行,我正在尝试将所有“出院家庭或自我护理(常规出院)AHR”替换为“家庭”。当我尝试时:

library(tidyverse)  
DF<-DF%>%mutate(b=str_replace(b,"Discharged home or self-care (routine discharge) AHR","Home"))

什么都没有发生。如果我尝试类似的代码来替换所有的“Home”,例如用其他东西......工作正常:

DF<-DF%>%mutate(b=str_replace(b,"Home","House"))

所以我认为它与括号有关,但我在逃避它时迷失了方向。有什么想法吗?

【问题讨论】:

    标签: r tidyverse


    【解决方案1】:

    如果是固定匹配,我们可以使用base R中的replace==

    library(dplyr)
    DF%>%
       mutate(b= replace(b,
         b == "Discharged home or self-care (routine discharge) AHR","Home"))
    

    或者在str_replace 中,指定fixed,因为() 是用于捕获组的正则表达式元字符,默认情况下它处于正则表达式模式。

    library(stringr)
    DF %>%
      mutate(b=str_replace(b,
         fixed("Discharged home or self-care (routine discharge) AHR"),"Home"))
    

    要从字面上评估 (,我们需要转义 (\\() 或将其放在方括号内或使用 fixed 包装器

    DF%>%
       mutate(b=str_replace(b,
        "Discharged home or self-care \\(routine discharge\\) AHR","Home"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      相关资源
      最近更新 更多