stringr: удаление скобок и скобок из строки - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу удалить скобки и скобки из строки.Я получил требуемый результат, однако искал более компактный метод.

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.

1 Ответ

0 голосов
/ 19 сентября 2018

Мы можем использовать |

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 из base R или str_extract из stringr, чтобы проверить шаблоны, где число может начинаться с - и включать .

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