从deriv命令中提取渐变

时间:2010-10-27 14:37:24

标签: r gradient

一位同事前几天问我以下问题。在下面的代码中,如何提取渐变:

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

我的回答是

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

这种语法对我来说似乎很笨拙。有没有更好的方法来提取渐变?

2 个答案:

答案 0 :(得分:3)

不确定这些是更好,但是:

with(attributes(a), gradient)

attributes(a)$gradient

是将属性作为要从中选择的列表返回的替代方法。

答案 1 :(得分:3)

虽然它并不比你的方法好,但你可以创建一个函数grad,它接受​​带有渐变属性的数字并返回渐变值。

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

grad(a)

现在可重复使用。