[Rd] deriv (PR#953)
Peter Dalgaard BSA
p.dalgaard@biostat.ku.dk
30 May 2001 00:35:00 +0200
tlumley@u.washington.edu writes:
> The first bug is very strange and I suspect there's something going on in
> the memory management. Supplying a function as the third argument should
> cause the body of the function to be replaced by the derivative. This
> sometimes works, but doesn't depend on the function in any simple way.
>
> It seems to depend on how new the function is. With a new anonymous
> function it never works, but with a base function like lm or log it always
> works:
>
> ## works
> deriv(expression(sin(cos(x) * y)), c("x","y"), log)
> ## identical function
> LOG<-function (x, base = exp(1))
> if (missing(base)) .Internal(log(x)) else .Internal(log(x, base))
> ## doesn't work
> deriv(expression(sin(cos(x) * y)), c("x","y"), LOG)
>
> Creating a new function somewhere else in the search path doesn't help
> assign("a",function(x,y){},pos=3)
> # doesn't work
> deriv(expression(sin(cos(x) * y)), c("x","y"), a)
>
> but copying a loaded function does
>
> library(tcltk)
> a<-tkbind
> #works
> deriv(expression(sin(cos(x) * y)), c("x","y"), a)
<grin>
You had me going there too.
Try stripping the "source" attribute from the template functions....
(or from the output of deriv() for that matter). I'll give it a think
how to do that inside the deriv function so as to preserve user
sanity.
--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel 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-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._