Это неуловимо, потому что strsplit(s, '%[(-)]%')
отбрасывает ваши шаблоны разделения, что было бы хорошо для '/', но не для захвата среднего символа между процентами.Если вы гарантируете, что после правильного процента есть пробел, вы можете просто выполнить strsplit (s, '%');в противном случае вам понадобится регулярное выражение с правосторонним утверждением для цифр.
Проще и понятнее сделать два разбиения: сделайте первый разбивку на процентах '%':
s2 <- strsplit(s, '% ')[[1]]
"0 / 10 %(" "1 / 11 %-" "2 / 12 %)" "3 / 13"
Теперь вы делаете второе разделение на символы '/' и символы левого процента:
> strsplit(s2, '[%/]')
[[1]]
[1] "0 " " 10 " "("
[[2]]
[1] "1 " " 11 " "-"
[[3]]
[1] "2 " " 12 " ")"
[[4]]
[1] "3 " " 13"
Небольшая проблема с этим, он рваный;последняя строка не имеет символа.Поскольку в вашем случае кажется безопасным предположить, что это происходит только в конце строки, самый простой способ - добавить символ конца строки '% $%' (обратите внимание на завершающий пробел), а затем отобразить $
-> NA.позже.