# [R] Derivative of a function

Gabor Grothendieck ggrothendieck at gmail.com
Tue Jul 5 15:14:20 CEST 2005

```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:

e <- lapply(1:4, function(i) bquote(x^.(i)))
idx <- matrix(1:4, 2)
e12 <- e[idx[1,2]][]
D(e12, "x")

```