提取多项式表达式的系数

时间:2016-07-12 08:07:49

标签: r

a="1-B*(0.5+c1)+B**2*(-c2+0.5*c1)+0.5*c3*B**3"

我想将上面的字符串细分为

B, -(0.5+c1), B**2, (-c2+0.5c1), B**3, 0.5*c3

使用R.任何建议?

1 个答案:

答案 0 :(得分:1)

虽然不完全是您想要的输出,但以下内容非常接近,可能有助于您解决问题:

a <- "1-B*(0.5+c1)+B**2*(-c2+0.5*c1)+0.5*c3*B**3"
b <- gsub("**", "^", a, fixed = TRUE)  # Replace "**" with "^" to simply the regex

ans <- unlist(strsplit(b, '\\([^)]*\\)(*SKIP)(*F)|\\*|\\+', perl = TRUE))
print(ans)
#[1] "1-B"       "(0.5+c1)"     "B^2"     "(-c2+0.5*c1)" "0.5"          "c3"          
#[7] "B^3"

有关使用的正则表达式的更多信息,请参见here。 您可以使用"^"轻松将"**"更改回gsub

我认为没有简单的方法将B的负号附加到系数上。

相关问题