从字符串-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
之间进行匹配来进行以下测试:
p <- c("abba", "abcdab")
gsub("\\(a[^a]*a\\)", "|\\1|", p)
我希望输出为
|abba|
|abcda|b
但是输出是
[1] "abba" "abcdab"
达到所需结果的正确正则表达式是什么?
谢谢。
答案 0 :(得分:1)
我们可能会使用
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"