我使用了rSymPy并获得了以下表达式:
“1 - 0.7 * B - 0.3 * B ** 2”
现在我想提取B的系数和B ^ 2的系数,并存储在矩阵中。我在R中试过gsub函数,有什么建议吗?
答案 0 :(得分:1)
你的意思是:
> x <- "1 - 0.7*B - 0.3*B**2"
> m <- gregexpr("[0-9]+\\.[0-9]+",x)
> out <- unlist(regmatches(x,m) )
> out
[1] "0.7" "0.3"
一个更复杂的例子:
> x <- c("1 - 0.7*B - 0.3*B**2", "1 - 0.3*B - 0.7*B**2","1 - 1.3*B - 0.6*B**2")
> m <- gregexpr("[0-9]+\\.[0-9]+",x)
> out <- unlist(regmatches(x,m) )
> out.mat <- matrix(as.numeric(out), ncol=2,nrow=length(x), byrow = TRUE,
+ dimnames = list(paste0("exp_",seq_along(x)),c("B", "B^2")))
> out.mat
B B^2
exp_1 0.7 0.3
exp_2 0.3 0.7
exp_3 1.3 0.6
答案 1 :(得分:1)
x <- "1 - 0.72*B - 0.3*B**2 + 0.4*B**3"
m <- gregexpr("(\\+|-)\\s+[0-9]+\\.[0-9]+",x)
out <-(unlist(regmatches(x,m) ))
out2<-as.numeric(gsub("\\s","",out))
out2