如何在R中用来自变量的常数编写数学方程式?

时间:2014-08-01 12:41:40

标签: r

在R-统计中,假设我有

a <- 5

b <- 3

现在我想用表达式函数编写一个数学方程式,如下所示

exp <- expression(a * e ^ (b * x))

但是我想要方程中的a和b的值而不是字母,

即。我希望它显示 5 e ^ 3x。

我该怎么做?

原因是我不会提前知道值a和b,这些来自拟合指数曲线,所以我不能使用expression(5 * e ^ (3 * x)).

3 个答案:

答案 0 :(得分:4)

试试这个:

subst <- function(e, ...) do.call(substitute, list(e[[1]], list(...)))
exp <- expression(a * e^(b * x))
subst(exp, a = 1, b = 5)
## 1 * e^(5 * x)

请注意,虽然看起来可能更简单

substitute(expression(a * e^(b * x)), list(a = 1, b = 5))

有效,您不能简单地用变量替换expression(a * e^(b * x)),因此只有当您的应用程序允许您对表达式进行硬编码时它才有效。

答案 1 :(得分:3)

您可以使用substitute命令

a <- 5
b <- 3
substitute(expression(a * e^(b * x)), list(a=a, b=b))
# expression(5 * e^(3 * x))

或只是

substitute(a * e^(b * x), list(a=a, b=b))
# 5 * e^(3 * x)

答案 2 :(得分:2)

bquote可能对您有用。这是一个例子,

> a <- 5; b <- 3
> bquote(.(a) * e^(.(b) * x))
# 5 * e^(3 * x)
> a <- 10; b <- 6
> bquote(.(a) * e^(.(b) * x))
# 10 * e^(6 * x)

.()中包含的术语在指定环境中进行评估。结果是一个未评估的表达式,.()包装的变量被替换为其赋值。