我正在寻找一种方法来创建一个表达式,该表达式是两个给定表达式的乘积.例如,假设我有
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函数希望表达式作为输入.
试试这个:
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)
我不经常处理这个问题,但这样的事情似乎有效
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)