7
我有下面的代碼:如何將表達式的變量傳遞給curve()作爲其方程?
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'
我試圖在eval()調用中包裝D(e),但無濟於事。
嘗試多一點:
substitute(expression(x^2+3*x-3), list(x=3))
結果,一如預期,在:
expression(3^2+3*3-3)
但是:
substitute(e, list(x=3))
結果:
e
發生了什麼事?我怎樣才能得到這個工作?
或者,等價地,'的eval(呼叫( 「曲線」,d(E, 「X」),選自= O,以= 1)',它使用的語法可能更容易解析(?) –
Aha,現在我更好地理解替換和表達式的行爲,並且我最喜歡@Ben Bolker的第一個解決方案,因爲在這種形式中它更容易至少在概念上寫作:'eval(替代(曲線(y,from = 0,to = 10),list(y = D(e,「x」))))' – Nanitous
@Ben Bolker:對於一個可行的解決方案感到滿意,但我仍然不太瞭解它。'curve()'發出一條錯誤消息明確地說,第一個參數必須是一個表達式,而「e」是一個包含表達式的變量,其中包含一個「x」。 R如何看到包含表達式的變量?在我看來,R以某種方式傳遞了不同的參數。 – Nanitous