2010-10-27 59 views
1

一位同事前幾天問我以下問題。在接下來的一段代碼,你怎麼提取梯度:從deriv命令中提取梯度

> x=5 
> a = eval(deriv(~ x^3, "x")) 
> a 
[1] 125 
attr(,"gradient") 
     x 
[1,] 75 

我的回答是

> attr(a, "gradient")[1] 
[1] 75 

這句法似乎笨重我。有沒有更好的方法來提取漸變?

回答

3

不知道這算不算更好,但:

with(attributes(a), gradient) 

attributes(a)$gradient 

是返回的屬性從中選擇一個列表的替代品。

3

雖然它不比你的方法更好,但你可以創建一個函數grad,它帶有一個帶有漸變屬性的數字並返回漸變值。

grad = function(x)attr(x,"gradient")[1] 

grad(a) 

現在可以重複使用。