# [R] Derivative of a function

Gabor Grothendieck ggrothendieck at gmail.com
Tue Jul 5 15:35:01 CEST 2005

```On 7/5/05, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> On 7/4/05, Gabriel Rodrigues Alves Margarido
> <gramarga at carpa.ciagri.usp.br> wrote:
> > Suppose I have a simple function that returns a matrix, such as:
> >
> > test <- function(x){ return(matrix(c(x,x^2,x^3,x^4),2,2)) }
> >
> > so that test returns:
> > [ x      x^3 ]
> > [ x^2    x^4 ]
> >
> > Is it possible for me to get the derivative of an expression such as:
> >
> > c(1,0) %*% test() %*% c(0,1)
> >
> > The vectors are used just to "index" the matrix.
> > I don't want a value, but the expression to work with (in that case,
> > the expected expression would be 3*x^2)...
> >
> > Tried functions D and deriv in many ways, but no success.
> > I will be grateful if anyone can help.
> >
>
> Note sure if this is good enough but in the following you can
> replace 1,2 in the third line with other indices to extract out any
> matrix component and differentiate it.  e is a list that contains the
> 4 expressions and idx[i,j] gives the index in e that contains
> the i,j-th expression:
>

Here is an improvement that gets rid of idx:

> e <- lapply(1:4, function(i) bquote(x^.(i)))
> dim(e) <- c(2,2)
> D(e[1,2][[1]],"x")
3 * x^2

```