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: rvarad...@jhmi.edu


----- Original Message -----
From: Richard Morey <r.d.mo...@rug.nl>
Date: Thursday, April 9, 2009 8:10 am
Subject: [R] problems with integrate ... arguments
To: r-help@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@r-project.org mailing list
PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@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.

______________________________________________
R-help@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.

Reply via email to