我有以下代码:
e <- expression(x^2+3*x-3)
我想使用R的符号导数函数D绘制一阶导数图:
curve(D(e), from=0, to=10)
但后来我收到以下错误:
Error in curve(expression(e), xname = "x", from = 0, to = 3000) :
'expr' must be a function, or a call or an expression containing 'x'
我试图将D(e)包装在对eval()的调用中,但无济于事。
再试一次:
substitute(expression(x^2+3*x-3), list(x=3))
结果,如预期的那样:
expression(3^2+3*3-3)
可是:
substitute(e, list(x=3))
结果:
e
发生了什么事?我怎样才能使这个工作?
答案 0 :(得分:5)
它有点笨重但是
eval(substitute(curve(y),list(y=D(e,"x"))))
似乎有效。
也是如此do.call(curve,list(D(e,"x")))
答案 1 :(得分:3)
函数更易于操作和测试:
e <- expression(x^2+3*x-3)
de <- D(e, 'x')
fde <- function(x) eval(de)
curve(fde, from=0, to=10)