[R] Error in match.fun(f) : object 'x' not found

peter dalgaard pdalgd at gmail.com
Tue Feb 21 19:56:21 CET 2017


The curve() function is being (overly?) clever in allowing nonstandard evaluation to let you specify an expression for the function argument. For integrate(), you need to go the standard way and set up an actual function of 1 argument and pass that. It's not all that hard:

> f <- function(x) x*dnorm(x, mean=1.234)
> integrate(f, -Inf, Inf)
1.234 with absolute error < 3.1e-07

(In fact, reading the examples on the help page for integrate() might have gotten you there faster than writing for help...)

Notice, incidentally, that curve() also works with functions:

> curve(f, -2, 4)

-pd

On 21 Feb 2017, at 18:29 , C W <tmrsg11 at gmail.com> wrote:

> Dear R list,
> 
> I am having a little trouble understanding the R code. I want to compute
> expectation of normal pdf.
> 
> I did the following:
> 
> integrate(x*dnorm(x, rate=1), -Inf, Inf)
> Error in match.fun(f) : object 'x' not found
> 
> If I did this, I get,
> integrate(dexp(x, rate=1), -Inf, Inf)
> Error in dexp(x, rate = 1) : object 'x' not found
> 
> How should I fix this? I remember when I did it for curve(), it was fine.
> 
> curve(pexp(x, rate = 1/2), from = 0, to = 5)
> 
> What am I not getting here? Thank you so much!
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list