Sebastian:

This is somewhat arcane, perhaps even a bug (correction on this
welcomed). The problem is that the "expr" argument to curve() must be
an actual expression, not a call to parse that evaluates to an
expression. If you look at the code of curve() you'll see why
(substitute() does not evaluate  expr in the code). Another simple
workaround other than sticking in the eval() call is this:

myf <- function(x)NUL
body(myf)<- parse(text = "{1+x^2}")   ## note the additional "{   }"
for safety, though not necessary here
## this idiom will continue to work for any text.

curve(myf, from = 0, to = 10)  ## myf is now the name of a function
that executes the parsed text.

*** I would appreciate any wiser R programmers correcting any
misunderstanding or error in my explanation ***

Cheers,
Bert

Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Wed, May 2, 2018 at 8:11 PM, Sebastien Bihorel
<sebastien.biho...@cognigencorp.com> wrote:
>
> Hi,
>
> Down a cascade of function calls, I want to use the curve function with an 
> expression that is a variable. For various reason, this variable must be a 
> character object and cannot be an expression as required by the curve 
> function. How do I convert my variable into a expression that is accepted by 
> curve?
>
> Thanks in advance for your help.
>
> ## The following attempts do not work
>
> myf <- '1+x^2'
> curve(myf, from = 0, to = 10) # obviously !
> curve(parse(text=myf), from = 0, to = 10) # not sure why this does not work
>
> ## This works but does not feel elegant:
> eval(parse(text=sprintf('curve(%s, from = 0, to = 10)', myf)))
>
> ______________________________________________
> R-help@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.

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

Reply via email to