Как я могу избавиться от конкретных скобок без потери их содержимого? - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь избавиться от скобок для параметров (#) в длинной строке с gsub в R.

От:

"(Prot) = ((1-(BTZ)^params(9)/((BTZ)^params(9)+params(10)^params(9))*(1+params(10)^params(9)))-(Prot)) / params(8)"

, чтобы получить результат:

"(Prot) = ((1-(BTZ)^params9/((BTZ)^params9+params10^params9)*(1+params10^params9))-(Prot)) / params8"

Но я не могу получить правильный номер из скобок.Я попробовал это:

gsub( "params\\(\\d\\)" ,'params\\d', j , fixed = FALSE)

Вот что я получил:

"(Prot) = ((1-(BTZ)^paramsd/((BTZ)^paramsd+params(10)^paramsd)*(1+params(10)^paramsd))-(Prot)) / paramsd;"

1 Ответ

4 голосов
/ 04 июня 2019

Вы должны включить группу захвата в pattern, используя (), и ссылку на группу захвата в replacement, используя \\1:

gsub("\\((\\d+)\\)", "\\1", j)

#### OUTPUT ####
"(Prot) = ((1-(BTZ)^params9/((BTZ)^params9+params10^params9)*(1+params10^params9))-(Prot)) / params8"

Я также включил + для случаев, когда существует более одной цифры (например, «10»).

...