从 deriv 命令中提取梯度

发布于 2024-09-29 13:35:50 字数 268 浏览 6 评论 0原文

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

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

我的答案是

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

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

A colleague asked me the following question the other day. In the following piece of code, how do you extract the gradient:

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

My answer was

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

This syntax seems clunky to me. Is there a better way of extracting the gradient?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月野兔 2024-10-06 13:35:50

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

with(attributes(a), gradient)

attributes(a)$gradient

是返回属性作为可供选择的列表的替代方案。

Not sure these count as better, but:

with(attributes(a), gradient)

or

attributes(a)$gradient

are alternatives that return the attributes as a list from which to select.

把人绕傻吧 2024-10-06 13:35:50

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

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

grad(a)

现在可以重复使用。

Though it is no better than your method, you could make a function, grad, that takes a numeric with a gradient attribute and returns the gradient value.

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

grad(a)

which is now reusable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文