1
一位同事前幾天問我以下問題。在接下來的一段代碼,你怎麼提取梯度:從deriv命令中提取梯度
> x=5
> a = eval(deriv(~ x^3, "x"))
> a
[1] 125
attr(,"gradient")
x
[1,] 75
我的回答是
> attr(a, "gradient")[1]
[1] 75
這句法似乎笨重我。有沒有更好的方法來提取漸變?
一位同事前幾天問我以下問題。在接下來的一段代碼,你怎麼提取梯度:從deriv命令中提取梯度
> x=5
> a = eval(deriv(~ x^3, "x"))
> a
[1] 125
attr(,"gradient")
x
[1,] 75
我的回答是
> attr(a, "gradient")[1]
[1] 75
這句法似乎笨重我。有沒有更好的方法來提取漸變?
不知道這算不算更好,但:
with(attributes(a), gradient)
或
attributes(a)$gradient
是返回的屬性從中選擇一個列表的替代品。
雖然它不比你的方法更好,但你可以創建一個函數grad
,它帶有一個帶有漸變屬性的數字並返回漸變值。
grad = function(x)attr(x,"gradient")[1]
grad(a)
現在可以重複使用。