我想你會與D()
更好:
D(expression(x^2),"x")
## 2 * x
D()
是記錄在同一頁上deriv()
(即?D
,?deriv
帶給你相同的頁面)
顯然,~
快捷方式不適用於D
,但您可以使用quote()
而不是expression()
來節省一些擊鍵。
eval(D(quote(x^2), "x"),list(x=5))
## 10
從deriv
結果出來拉梯度表達比這還要難吃,因爲它不是什麼作家以爲你會嘗試做。 .grad
不是最終結果的屬性,它是在函數內部使用的臨時變量。什麼是作者認爲用戶希望在這種情況下是漸變的數值值時,該表達式的計算:
dd <- deriv(~ x^2,"x")
attr(eval(dd,list(x=5)),"gradient")
## x
## [1,] 10
你可以得到表達,但只有這樣做具體體現在身體周圍挖表達。 dd[[1]]
是表達的主體。 dd[[1]][[4]]
是第四子表達式:
dd[[1]][[4]]
## .grad[, "x"] <- 2 * x
,然後我們可以提取右側(表達式存儲在內部前綴符號爲{operator,LHS,RHS}
:
dd[[1]][[4]][[3]]
## 2 * x
但這肯定似乎是如果R作者曾經對由deriv()
返回的表達式的內部結構進行了細微的改變,那麼這種結構將會被破壞;因此這種結構沒有被記錄,因此它不能保持不變...
沒問題。我會的,因爲這是確定的。 thanx – Toby
但是,我該如何訪問這些「點符號元素」,即.value,.grad? (因缺乏更好的描述知識) – Toby
這是最好的方式? dx < - deriv(〜x^2,「x」)____ dx [[1]] [[2]] [[3]] ____ > x^2 – Toby