[R] problems with integrate ... arguments
Duncan Murdoch
murdoch at stats.uwo.ca
Thu Apr 9 16:52:50 CEST 2009
On 09/04/2009 10:19 AM, Ravi Varadhan wrote:
> Richard,
>
> Your function f() is already vectorized, and it works well (see below). Therefore, you don't need to create f2().
He did say that this was a simplified example.
The problem appears to be in Vectorize, which uses match.call() to get
the args from the call to your f function. match.call() can make
substitutions for ... args, but only seems to do so for one level up,
and the dots are being passed through two levels here: ... as an arg to
integrate, which creates a local function ff, and passes ... through it.
Not sure yet where to fix this...
Duncan Murdoch
>
> f = function(x, const) 2^x + const
>
> testval = 2
>
>> integrate(f, 0.5, 1, const=testval)
> 1.845111 with absolute error < 2.0e-14
>
>
> Ravi.
>
> ____________________________________________________________________
>
> Ravi Varadhan, Ph.D.
> Assistant Professor,
> Division of Geriatric Medicine and Gerontology
> School of Medicine
> Johns Hopkins University
>
> Ph. (410) 502-2619
> email: rvaradhan at jhmi.edu
>
>
> ----- Original Message -----
> From: Richard Morey <R.D.Morey at rug.nl>
> Date: Thursday, April 9, 2009 8:10 am
> Subject: [R] problems with integrate ... arguments
> To: r-help at r-project.org
>
>
>> Hi everyone,
>>
>> I saw this problem dealt with here:
>>
>>
>> but no one answered that request that I can tell. I'm having the same
>> problem. I'm having problems passing arguments to functions that I'd
>> like to integrate. I could swear this worked in the past, but I can't
>> get it to work now. I'm running R on Windows.
>>
>> Here's my toy code to reproduce the problem:
>>
>>
>> R.Version()$version.string
>> # [1] "R version 2.8.1 (2008-12-22)"
>>
>> f=function(x,const)
>> 2^x+const
>>
>> f2=Vectorize(f,c("x"))
>>
>> testval=2
>>
>> f2(1:5,testval)
>> # [1] 4 6 10 18 34
>> # The vectorized function seems to work right.
>>
>> integrate(f2,.5,1,c=2)
>> # Works. Returns
>> # 1.845111 with absolute error < 2.0e-14
>>
>> integrate(f=f2,.5,1,const=testval)
>> # Doesn't work. Returns
>> # Error in eval(expr, envir, enclos) :
>> # ..1 used in an incorrect context, no ... to look in
>>
>> I understand that I don't have to Vectorize this function for it to
>> work, but the more complicated functions I'm using require Vectorization.
>>
>> Why can't I pass the argument "const" as a variable, instead of a value?
>> I don't understand this error.
>>
>> Thanks in advance,
>> Richard Morey
>>
>> --
>> Richard D. Morey
>> Assistant Professor
>> Psychometrics and Statistics
>> Rijksuniversiteit Groningen / University of Groningen
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>>
>> PLEASE do read the posting guide
>> and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list