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 に答える