I'm trying to write some code that throws a few expressions around the
place, and I've boiled down the problem to be equivalent to this.
Consider the curve function which plots expressions in 'x':
> curve(x^2)
Now wrap that in the most naive wrapper function:
> fc=function(m){curve(m)}
and try it:
> fc(x^2)
Error in eval(expr, envir, enclos) : Object "x" not found
What could be done to my 'fc' or the expression processing of curve to
make this sort of thing work?
What I also want to do is provide a default, something like:
fc = function(m=sqrt(x)){curve(m)}
It's not actually curve() that I want to call, but something similar
I've written myself, so I can fiddle with that as I wish.
I've had a read of the R Language Definition - I imagine the answer is
in there somewhere...
Barry
I think you want some eval/substitute action, such as
fc <- function(m) { eval(substitute(curve(m))) }
-roger
Barry Rowlingson wrote:> I'm trying to write some code that throws a few expressions around the
> place, and I've boiled down the problem to be equivalent to this.
>
> Consider the curve function which plots expressions in 'x':
>
> > curve(x^2)
>
> Now wrap that in the most naive wrapper function:
>
> > fc=function(m){curve(m)}
>
> and try it:
>
> > fc(x^2)
> Error in eval(expr, envir, enclos) : Object "x" not found
>
> What could be done to my 'fc' or the expression processing of curve
to
> make this sort of thing work?
>
> What I also want to do is provide a default, something like:
>
> fc = function(m=sqrt(x)){curve(m)}
>
> It's not actually curve() that I want to call, but something similar
> I've written myself, so I can fiddle with that as I wish.
>
> I've had a read of the R Language Definition - I imagine the answer is
> in there somewhere...
>
> Barry
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
Barry Rowlingson wrote:> I'm trying to write some code that throws a few expressions around the > place, and I've boiled down the problem to be equivalent to this. > > Consider the curve function which plots expressions in 'x': > > > curve(x^2) > > Now wrap that in the most naive wrapper function: > > > fc=function(m){curve(m)} > > and try it: > > > fc(x^2)You can try fc <- function(m) do.call("curve", list(substitute(m))) fc(x^2) Uwe Ligges> Error in eval(expr, envir, enclos) : Object "x" not found > > What could be done to my 'fc' or the expression processing of curve to > make this sort of thing work? > > What I also want to do is provide a default, something like: > > fc = function(m=sqrt(x)){curve(m)} > > It's not actually curve() that I want to call, but something similar > I've written myself, so I can fiddle with that as I wish. > > I've had a read of the R Language Definition - I imagine the answer is > in there somewhere... > > Barry > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html