2010-10-27 11 views
1

Un collègue m'a posé la question suivante l'autre jour. Dans la pièce de code suivante, comment voulez-vous extraire le gradient:Extraire le dégradé de la commande dérivée

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

Ma réponse était

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

Cette syntaxe semble maladroit pour moi. Existe-t-il un meilleur moyen d'extraire le dégradé?

Répondre

3

Je ne sais pas ce nombre comme mieux, mais:

with(attributes(a), gradient) 

ou

attributes(a)$gradient 

sont des alternatives qui renvoient les attributs comme une liste à partir de laquelle choisir.

3

Bien que ce ne soit pas mieux que votre méthode, vous pouvez créer une fonction, grad, qui prend un numérique avec un attribut gradient et renvoie la valeur du gradient.

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

grad(a) 

qui est maintenant réutilisable.

Questions connexes