如何将字符串解析为R中的实数等式

时间:2016-05-23 21:49:55

标签: r string equation

我正在尝试将字符串转换为实数等式。例如:我当前的字符串是

> a<-"y = 31.563 + 5.923*x1 + 5.061*x2 - 0.662*x3 - 0.381*x4"
> class(a)
[1] "character"

现在,我有了一个新的数据集:

x1=3 
x2=3
x3=4
x4=7
df_new = data.frame(x1,x2,x3,x4)

我想在等式上得到y的值。所以我需要将该字符串转换为实数等式。有人知道怎么做吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

这可能是执行此操作的最佳方式,但eval(parse(...))可行:

a <- "y = 31.563 + 5.923*x1 + 5.061*x2 - 0.662*x3 - 0.381*x4"
df_new <- data.frame(x1=3,x2=3,x3=4,x4=7)
eval(parse(text=gsub("y =","",a)),df_new)

我不太确定如何从eval()返回值,所以我摆脱了y=部分......

答案 1 :(得分:2)

在我的评论中,我提到你可以使用一个功能。好吧,我现在不会触及那个解决方案,而是使用expression为您提供另一个解决方案。

## define expression
expr <- expression(31.563 + 5.923 * x1 + 5.061 * x2 - 0.662 * x3 - 0.381 * x4)
## sample data
df <- data.frame(x1 = runif(5), x2 = runif(5), x3 = runif(5), x4 = runif(5))
## evaluate your expression in data frame environment 
y <- eval(expr, df)

@Ben使用了组合eval()parse(),这是另一种常见技巧。如果你真的想从字符串string开始,或者你得到这样一个字符串而没有选择,那么你必须先做parse(text = string)使它成为一个表达式。我的答案真的假设你可以自己输入你的等式,在这种情况下使用expression非常好。