# [R] symbolic manipulations

Thomas Lumley tlumley at u.washington.edu
Sat Apr 7 02:07:29 CEST 2001

```On Fri, 6 Apr 2001, Jeff Miller wrote:

>
>
> 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) ?

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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```