Соответствие и замена строки R - PullRequest
0 голосов
/ 20 февраля 2019

Начиная со строки -theta[0] * x[0] * x[4] -theta[1] * x[1], я хотел бы захватить theta[.] и заменить на exp(theta[.]), чтобы получить конечный результат как:

-exp(theta[0]) * x[0] * x[4] -exp(theta[1]) * x[1]

Как мне выполнитьэто в R?

Я попробовал следующее, чтобы проверить соответствие между a s следующим образом:

p <- c("abba", "abcdab")                                                      
gsub("\\(a[^a]*a\\)", "|\\1|", p)

Я ожидал, что на выходе будет что-то вроде

|abba|
|abcda|b

Но на выходе получается

[1] "abba"   "abcdab"

Какое правильное выражение регулярного выражения для достижения желаемого результата?

Заранее спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

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

gsub("(theta\\[\\d+\\])", "exp(\\1)", "-theta[0] * x[0] * x[4] -theta[1] * x[1]")
# [1] "-exp(theta[0]) * x[0] * x[4] -exp(theta[1]) * x[1]"

, оно соответствует theta[.] с любым количеством цифр вместо . и заменяет его на exp(theta[.]).

Ваша попытка была удачнойвам просто не нужно было выходить за скобки, поскольку они обозначают группу, к которой вы хотите обратиться позже:

gsub("(a[^a]*a)", "|\\1|", p)
# [1] "|abba|"   "|abcda|b"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...