【问题标题】:Removing only empty parenthesis in R [duplicate]仅删除R中的空括号[重复]
【发布时间】:2022-01-21 03:11:57
【问题描述】:

我正在处理一些标题,我需要删除标题中的括号,但只有 where 里面什么都没有,但如果它有度量单位,则保留其他的。例如

"Sample_No ()"  - Sample_No
"SOC (%)" - "SOC (%)"

示例

【问题讨论】:

  • 我已经编辑了这个,但是对于只涉及文本输入和输出的操作,提供简单的文本可能会更好。这将使问题更容易理解,尤其是对于使用屏幕阅读器等的人。

标签: r regex


【解决方案1】:

如果是空括号匹配左括号后跟右括号,没有任何其他字符,并替换为gsub 中的空白("")(如果有多个匹配项)或示例连sub都够了)

gsub("\\s*\\(\\)", "", v1)

-输出

[1] "Sample_No" "SOC (%)"  

或者使用str_remove from stringr

library(stringr)
trimws(str_remove_all(v1, fixed("()")))
[1] "Sample_No" "SOC (%)"  

数据

v1 <- c("Sample_No ()", "SOC (%)")

【讨论】:

    【解决方案2】:

    gsub 与正则表达式一起使用。 \\s 表示空格 \\(\\) 必须被转义的括号。

    x <- c("Sample_No ()", "Sample_No", "SOC (%)", "SOC (%)")
    
    gsub('\\s\\(\\)', '', x)
    # [1] "Sample_No" "Sample_No" "SOC (%)"   "SOC (%)"  
    

    【讨论】:

      【解决方案3】:

      使用gsub 你可以这样做:

      header <- c("Sample_No ()", "SOC (%)")
      
      gsub("\\s*\\(\\)", "", header)
      #> [1] "Sample_No" "SOC (%)"
      

      【讨论】:

      • 感谢@stefan 和所有其他人!
      • @TomasV 欢迎您。但在我看来,akrun 应该得到公认的答案。他不仅是第一个回答的,而且他的回答比我的更完整。
      【解决方案4】:

      为了完整起见,您可能想探索stringi 包。下面的代码还修剪了操作后可能留下的潜在空白。

      vecA <- c("Sample_No ()", "SOC (%)")
      stringi::stri_trim_both(
          stringi::stri_replace_all(str = vecA, replacement = "",  fixed = "()")
      )
      # [1] "Sample_No" "SOC (%)"
      

      这个特殊的操作是微不足道的,但stringi 对于更复杂的操作会派上用场。

      【讨论】:

        猜你喜欢
        • 2021-10-05
        • 2017-03-25
        • 2019-08-11
        • 2013-11-09
        • 1970-01-01
        • 2020-06-12
        • 2019-11-02
        • 2019-12-30
        • 1970-01-01
        相关资源
        最近更新 更多