在R-统计中,假设我有
a <- 5
b <- 3
Run Code Online (Sandbox Code Playgroud)
现在我想用表达式函数编写一个数学方程式,如下所示
exp <- expression(a * e ^ (b * x))
Run Code Online (Sandbox Code Playgroud)
但我想要方程中a和b的值而不是字母,
即我希望它显示5 e ^ 3x.
我怎么做?
原因是我不会提前知道值a和b,这些来自拟合指数曲线,所以我不能使用 expression(5 * e ^ (3 * x)).
尝试这个:
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)
Run Code Online (Sandbox Code Playgroud)
请注意,虽然看起来可能更简单
substitute(expression(a * e^(b * x)), list(a = 1, b = 5))
Run Code Online (Sandbox Code Playgroud)
有效,您不能简单地替换expression(a * e^(b * x))为变量,因此只有当您的应用程序允许您对表达式进行硬编码时它才有效。