【问题标题】:stringr: Removing Parentheses and Brackets from stringstringr:从字符串中删除括号和括号
【发布时间】:2018-09-19 15:45:25
【问题描述】:

我想从字符串中删除括号和方括号。我得到了所需的结果,但正在寻找更紧凑的方法。

Test <- c("-0.158)", "0.426)", "1.01)", "1.6)", "2.18)", "2.77]")

stringr::str_replace(
  string = Test
  , pattern = "\\)"
  , replacement = ""
)

# [1] "-0.158" "0.426"  "1.01"   "1.6"    "2.18"   "2.77]" 
stringr::str_replace(
    string = Test
  , pattern = "\\]"
  , replacement = ""
)

# [1] "-0.158)" "0.426)"  "1.01)"   "1.6)"    "2.18)"   "2.77"  
stringr::str_replace(
  string = stringr::str_replace(
            string = Test
            , pattern = "\\]"
            , replacement = ""
          )
  , pattern = "\\)"
  , replacement = ""
)

# [1] "-0.158" "0.426"  "1.01"   "1.6"    "2.18"   "2.77" 

想知道是否可以通过类似这样的单个命令获得它

stringr::str_replace(
  string = Test
  , pattern = "\\)^]"
  , replacement = ""
)

已编辑

找到一个非常简单的解决方案

readr::parse_number(Test) 
[1] -0.158 0.426 1.010 1.600 2.180 2.770.

【问题讨论】:

  • 找到了一个很简单的解决方案readr::parse_number(Test) [1] -0.158 0.426 1.010 1.600 2.180 2.770。
  • 我也想过parse_number。但是,如果一个字符串中有多个模式,它会提取第一个实例

标签: r string stringr


【解决方案1】:

我们可以使用|

gsub("\\)|\\]", "", Test)
#[1] "-0.158" "0.426"  "1.01"   "1.6"    "2.18"   "2.77"  

或者将括号放在[]内而不是转义

gsub("[][()]", "", Test)
#[1] "-0.158" "0.426"  "1.01"   "1.6"    "2.18"   "2.77"  

如果我们想要提取而不是删除,请使用 gregexpr/regmatches from base R 或 str_extract from stringr 来检查数字可以以 - 开头并包含 . 的模式

library(stringr)
str_extract(Test, "-?[0-9.]+")
#[1] "-0.158" "0.426"  "1.01"   "1.6"    "2.18"   "2.77"  

【讨论】:

  • 感谢@akrun 提供有用的答案。想知道是否有只从字符串中提取数字的功能。
  • @MYaseen208 更新了一个选项。希望对你有帮助
猜你喜欢
  • 2018-08-16
  • 2019-10-12
  • 2012-01-28
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多