This is R revision 40576 compiled with icc/ifort on OS X 10.4.9 (8P2122). It may be the compiler.
-- J. > example(deriv) deriv> ## formula argument : deriv> dx2x <- deriv(~ x^2, "x") ; dx2x expression({ .value <- x^2 .grad <- array(0, c(length(.value), 1), list(NULL, c("x"))) .grad[, "x"] <- 0 attr(.value, "gradient") <- .grad .value }) deriv> ## Not run: deriv> ##D expression({ deriv> ##D .value <- x^2 deriv> ##D .grad <- array(0, c(length(.value), 1), list (NULL, c("x"))) deriv> ##D .grad[, "x"] <- 2 * x deriv> ##D attr(.value, "gradient") <- .grad deriv> ##D .value deriv> ##D }) deriv> ## End(Not run) deriv> mode(dx2x) [1] "expression" deriv> x <- -1:2 deriv> eval(dx2x) [1] 1 0 1 4 attr(,"gradient") x [1,] 0 [2,] 0 [3,] 0 [4,] 0 deriv> ## Something 'tougher': deriv> trig.exp <- expression(sin(cos(x + y^2))) deriv> ( D.sc <- D(trig.exp, "x") ) [1] 0 deriv> all.equal(D(trig.exp[[1]], "x"), D.sc) [1] TRUE deriv> ( dxy <- deriv(trig.exp, c("x", "y")) ) expression({ .value <- sin(cos(x + y^2)) .grad <- array(0, c(length(.value), 2), list(NULL, c("x", "y"))) .grad[, "x"] <- 0 .grad[, "y"] <- 0 attr(.value, "gradient") <- .grad .value }) deriv> y <- 1 deriv> eval(dxy) [1] 0.8414710 0.5143953 -0.4042392 -0.8360219 attr(,"gradient") x y [1,] 0 0 [2,] 0 0 [3,] 0 0 [4,] 0 0 deriv> eval(D.sc) [1] 0 deriv> ## function returned: deriv> deriv((y ~ sin(cos(x) * y)), c("x","y"), func = TRUE) function (x, y) { .value <- sin(cos(x) * y) .grad <- array(0, c(length(.value), 2), list(NULL, c("x", "y"))) .grad[, "x"] <- 0 .grad[, "y"] <- 0 attr(.value, "gradient") <- .grad .value } deriv> ## function with defaulted arguments: deriv> (fx <- deriv(y ~ b0 + b1 * 2^(-x/th), c("b0", "b1", "th"), deriv+ function(b0, b1, th, x = 1:7){} ) ) function (b0, b1, th, x = 1:7) { .value <- b0 + b1 * 2^(-x/th) .grad <- array(0, c(length(.value), 3), list(NULL, c("b0", "b1", "th"))) .grad[, "b0"] <- 1 .grad[, "b1"] <- 0 .grad[, "th"] <- 0 attr(.value, "gradient") <- .grad .value } deriv> fx(2,3,4) [1] 4.522689 4.121320 3.783811 3.500000 3.261345 3.060660 2.891905 attr(,"gradient") b0 b1 th [1,] 1 0 0 [2,] 1 0 0 [3,] 1 0 0 [4,] 1 0 0 [5,] 1 0 0 [6,] 1 0 0 [7,] 1 0 0 deriv> ## Higher derivatives deriv> deriv3(y ~ b0 + b1 * 2^(-x/th), c("b0", "b1", "th"), deriv+ c("b0", "b1", "th", "x") ) function (b0, b1, th, x) { .value <- b0 + b1 * 2^(-x/th) .grad <- array(0, c(length(.value), 3), list(NULL, c("b0", "b1", "th"))) .hessian <- array(0, c(length(.value), 3, 3), list(NULL, c("b0", "b1", "th"), c("b0", "b1", "th"))) .grad[, "b0"] <- 1 .grad[, "b1"] <- 0 .grad[, "th"] <- 0 attr(.value, "gradient") <- .grad attr(.value, "hessian") <- .hessian .value } deriv> ## Higher derivatives: deriv> DD <- function(expr,name, order = 1) { deriv+ if(order < 1) stop("'order' must be >= 1") deriv+ if(order == 1) D(expr,name) deriv+ else DD(D(expr, name), name, order - 1) deriv+ } deriv> DD(expression(sin(x^2)), "x", 3) [1] 0 > On Jan 26, 2007, at 00:54 , Prof Brian Ripley wrote: > On Thu, 25 Jan 2007, Jan de Leeuw wrote: > >> but deriv() and friends do not work in R-devel (at least >> not on the Mac). > > They work for me under Linux and Windows. What does example(deriv) > give you? > >> ========================================================== >> Jan de Leeuw, 11667 Steinhoff Rd, Frazier Park, CA 93225 >> home 661-245-1725 skype 661-347-0667 global 254-381-4905 >> .mac: jdeleeuw +++ aim: deleeuwjan +++ skype: j_deleeuw >> ========================================================== >> > > -- > Brian D. Ripley, [EMAIL PROTECTED] > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UK Fax: +44 1865 272595 ========================================================== Jan de Leeuw, 11667 Steinhoff Rd, Frazier Park, CA 93225 home 661-245-1725 skype 661-347-0667 global 254-381-4905 .mac: jdeleeuw +++ aim: deleeuwjan +++ skype: j_deleeuw ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel