9

我有以下代码:

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

怎么了?我怎样才能得到这个工作?

4

2 回答 2

6

有点笨拙,但是

eval(substitute(curve(y),list(y=D(e,"x"))))

似乎工作。也一样

do.call(curve,list(D(e,"x")))
于 2013-10-17T14:44:06.220 回答
4

函数更易于操作和测试:

e <- expression(x^2+3*x-3)
de <- D(e, 'x')
fde <- function(x) eval(de)

curve(fde, from=0, to=10)
于 2013-10-17T14:54:20.417 回答