Skip to content

symbolic manipulations

3 messages · Jeff Miller, Thomas Lumley, Peter Dalgaard

#
Hi All,


    I copied code from an Splus manual to take symbolic derivatives:

            my.deriv <- function( mathfunc, var )
                        {
                            tmp <- substitute(mathfunc)
                            name <- deparse(substitute(var))
                            D(tmp,  name)
                          }

        (The code also works in R).


        When I try this on  x^2  I  get

        > my.deriv(x^2,  x)
        2 * x

        Suppose I assign the output of  my.deriv(x^2,  x)  to deriv.xsqr :

        > deriv.xsqr   <-   my.deriv(x^2,   x)
        > deriv.xsqr
        2 * x
        >

        My question is, how do I take the derivative of  deriv.xsqr
        (I want the answer to be 2) ?
        The naive guess

        > my.deriv(deriv.xsqr,  x)
        [1] 0

        is obviously wrong.

        I suspect that, to get the derivative I'm looking for, I need to
pass
        something like deparse(deriv.xsqr) into my.deriv, but this doesn't
work
        either.


        Thanks in advance,

                Jeff Miller














-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
On Fri, 6 Apr 2001, Jeff Miller wrote:

            
FAQ 7.6 explains that this is precisely why the D() function doesn't work
like my.deriv().

You can do it with
R> eval(substitute(my.deriv(expr,x),list(expr=deriv.xsqr)))
 [1] 2

but this is making life unnecessarily difficult for yourself.

R> D(D(expression(x^2),"x"),"x")
 [1] 2

is easier

	-thomas

Thomas Lumley			Asst. Professor, Biostatistics
tlumley at u.washington.edu	University of Washington, Seattle

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
"Jeff Miller" <jdm at xnet.com> writes:
I think the cleanest way is
[1] 2