Re: [Rd] (PR#7070)

From: Tony Plate <tplate_at_blackmesacapital.com>
Date: Fri 09 Jul 2004 - 01:53:01 EST

AFAICS, this is not a bug: you need to name those extra arguments that you want passed to the function, otherwise they are positionally matched to other arguments of integrate.

E.g.:

# Here "-1" and "7" are interpreted as the values for the arguments "rel.tol" and "abs.tol" of integrate
 > integrate(dnorm,lower=0,upper=1,subdivisions=100,-1,7) 0.3413447 with absolute error < 3.8e-15

# Give your extra arguments names (that do not match arguments of integrate) and they get passed down to the function being integrated  > integrate(dnorm,lower=0,upper=1,subdivisions=100,mean=-1,sd=7) 0.05565302 with absolute error < 6.2e-16  >

However, given that the "..." appears at the end of the argument list for integrate() (which means that prior argument names can be partially matched), how would one pass the value for an argument named "k" (for example)?

 > integrate(function(x,k=NA) browser(), 0, 1, k=7) Called from: f(x, ...)
Browse[1]> k
[1] NA
Browse[1]>

(the problem is that "k" partially matches the integrate() argument "keep.xy")

At Thursday 09:31 AM 7/8/2004, Rembert.DeBlander@econ.kuleuven.ac.be wrote:
> > version

>          _
>platform i686-pc-linux-gnu
>arch     i686
>os       linux-gnu
>system   i686, linux-gnu
>status
>major    1
>minor    7.1
>year     2003
>month    06
>day      16
>language R
>
>Bug:
>
>integrate(f,lower,upper,extra_args)
>
>where
>
>f <- function(x,extra_args)
>{
>body
>}
>
>integrate doesn't pass the extra arguments when calling f.
>As a first check of this finding I integrated dnorm from minus infinity =
>to 1, with mu =3D -1 and sd =3D 7. As shown below the result is not =
>equal to pnorm(1,-1,7), but it is equal to pnorm(1,0,1) where the =
>default values for mu and sd are taken.
>As a second check I debugged integrate see example 2 below.
>Since the function I need to integrate doesn't make sense with default =
>values for the extra parameters, I do not find a way to work around this =
>problem.
>I have not found any relevant existing bug reports.
>
>Rembert.DeBlander@econ.kuleuven.ac.be
>
>Example 1
>*********

> > integrate(dnorm,lower=3D"-INF",upper=3D1,-1,7)
>Error in integrate(dnorm, lower =3D "-INF", upper =3D 1, -1, 7) :
>         invalid parameter values
>

> > integrate(dnorm,lower=3D"-INF",upper=3D1,subdivisions=3D100,-1,7)
>0.841331 with absolute error < 0.16=20
>
> >integrate(dnorm,lower=3D"-INF",upper=3D1,subdivisions=3D100,rel.tol=3D.M=
>achine$double.eps^0.25,abs.tol=3D.Machine$double.eps^0.25,-1,7)
>0.8413448 with absolute error < 1.5e-05
>

> > pnorm(1,-1,7)
>[1] 0.6124515
>

> > pnorm(1,0,1)
>[1] 0.8413447
>
>Example 2
>*********
>fex <- function(x, v, M)
>{
>(x - t(v) %*% M %*% v)^2
>}
>debug(integrate)
>integrate(fex,lower=3D-3,upper=3D7,subdivisions=3D100,c(1,2,3),matrix(2,3=
>,3))
>
>results in
>.
>.
>.
>debug: wk <- .External("call_dqags", ff, rho =3D environment(), =
>as.double(lower),
>     as.double(upper), as.double(abs.tol), as.double(rel.tol),
>     limit =3D limit, PACKAGE =3D "base")
>Browse[1]>
>Error in t(v) : Argument "v" is missing, with no default
>
>______________________________________________
>R-devel@stat.math.ethz.ch mailing list
>https://www.stat.math.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-devel Received on Fri Jul 09 01:57:46 2004

This archive was generated by hypermail 2.1.8 : Wed 03 Nov 2004 - 22:45:01 EST