在R中操纵表达式

Ani*_*iko 9 expression r

我正在寻找一种方法来创建一个表达式,该表达式是两个给定表达式的乘积.例如,假设我有

e1 <- expression(a+b*x)
e2 <- expression(c+d*x)
Run Code Online (Sandbox Code Playgroud)

现在我想以编程方式创建表达式(e1)*(e2):

expression((a+b*x)*(c+d*x))
Run Code Online (Sandbox Code Playgroud)

背景 我正在写一个模型拟合函数.该模型有两个用户定义的部分.我需要能够单独"处理"它们,然后创建一个组合表达式并将其"处理"为一个模型."处理"涉及取数字导数,deriv函数希望表达式作为输入.

Hon*_*Ooi 5

试试这个:

e1 <- quote(a+b*x)   # or expression(*)[[1]]
e2 <- quote(c+d*x)
substitute(e1 * e2, list(e1=e1, e2=e2))
Run Code Online (Sandbox Code Playgroud)


Das*_*son 5

我不经常处理这个问题,但这样的事情似乎有效

e1 <- expression(a + b*x)
e2 <- expression(c + d*x)
substitute(expression(e1*e2), list(e1 = e1[[1]], e2 = e2[[1]]))
# expression((a + b * x) * (c + d * x))
Run Code Online (Sandbox Code Playgroud)