Разбор скобок и цитат - PullRequest
0 голосов
/ 07 июня 2019

У меня есть вектор строк, и я хотел бы его проанализировать. Однако квадратные скобки в сочетании с кавычками усложняют задачу. Я хотел бы решить эту проблему предпочтительно с stringr (не требуется)

x = c("[\"DER001_A375_96H:TRCN0000052583:-666\"]", "[\"TRCN0000052583\"]", "[\"AAK1\",\"AARS\"]", "[\"A375\"]", "-6.7389873 ... 4.6063291") 

> x
[1] "[\"DER001_A375_96H:TRCN0000052583:-666\"]" "[\"TRCN0000052583\"]"                     
[3] "[\"AAK1\",\"AARS\"]"                       "[\"A375\"]"                               
[5] "-6.7389873 ... 4.6063291"    

Ожидаемый результат:

DER001_A375_96H:TRCN0000052583:-666
TRCN0000052583
AAK1
AARS
A375
6.7389873
4.6063291

Ответы [ 2 ]

2 голосов
/ 07 июня 2019

Замените каждое вхождение ... запятой и удалите все вхождения в квадратных скобках.(Обратите внимание, что [...] определяет класс символов, и если первый символ в классе ], то он считается частью класса и не считается завершающим ].) Наконец, прочитайте его виспользуя scan.Пакеты не используются.

scan(text = gsub('[][]', '', gsub(" ... ", ",", x, fixed = TRUE)), 
  sep = ",", what = "", quiet = TRUE)

предоставление:

[1] "DER001_A375_96H:TRCN0000052583:-666" "TRCN0000052583"                     
[3] "AAK1"                                "AARS"                               
[5] "A375"                                "-6.7389873"                         
[7] "4.6063291"                     
1 голос
/ 07 июня 2019

С помощью SO (для разбора строки) и http://edrub.in/CheatSheets/cheatSheetStringr.pdf:

x = c("[\"DER001_A375_96H:TRCN0000052583:-666\"]", 
      "[\"TRCN0000052583\"]", "[\"AAK1\",\"AARS\"]", 
      "[\"A375\"]", "-6.7389873 ... 4.6063291") 
library("dplyr", quietly = TRUE, warn.conflicts = FALSE)
x1 <- x %>% 
        stringr::str_remove_all(pattern = "\"" ) %>% 
        stringr::str_remove_all(pattern = "\\[" ) %>% 
        stringr::str_remove_all(pattern = "\\]" )

x2 <- unlist ( strsplit(x1, split = ",") )
x3 <- unlist ( strsplit(x2, split = "\\.\\.\\.") )
x3
#> [1] "DER001_A375_96H:TRCN0000052583:-666"
#> [2] "TRCN0000052583"                     
#> [3] "AAK1"                               
#> [4] "AARS"                               
#> [5] "A375"                               
#> [6] "-6.7389873 "                        
#> [7] " 4.6063291"

Создано в 2019-06-07 пакетом Представить (v0.2.1)

...