代码之家  ›  专栏  ›  技术社区  ›  csgillespie Carl Witthoft

从deriv命令中提取渐变

  •  1
  • csgillespie Carl Witthoft  · 技术社区  · 14 年前

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

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

    我的回答是

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

    我觉得这个语法很笨拙。有没有更好的方法提取梯度?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Gavin Simpson    14 年前

    不确定这些算不算 ,但是:

    with(attributes(a), gradient)
    

    attributes(a)$gradient
    

        2
  •  3
  •   Greg    14 年前

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

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

    现在可重复使用。