一位同事前几天问我以下问题。在下面的代码中,如何提取渐变:
> x=5
> a = eval(deriv(~ x^3, "x"))
> a
[1] 125
attr(,"gradient")
x
[1,] 75
我的回答是
> attr(a, "gradient")[1]
[1] 75
这种语法对我来说似乎很笨拙。有没有更好的方法来提取渐变?
答案 0 :(得分:3)
不确定这些是更好,但是:
with(attributes(a), gradient)
或
attributes(a)$gradient
是将属性作为要从中选择的列表返回的替代方法。
答案 1 :(得分:3)
虽然它并不比你的方法好,但你可以创建一个函数grad
,它接受带有渐变属性的数字并返回渐变值。
grad = function(x)attr(x,"gradient")[1]
grad(a)
现在可重复使用。