[R] Question about curve function
Prof Brian Ripley
ripley at stats.ox.ac.uk
Mon Jun 6 08:55:54 CEST 2011
On Sun, 5 Jun 2011, Abhilash Balakrishnan wrote:
> Dear Mr. Murdoch,
>
> I find out that still do not understand why the following does not work:
>
>> curve(expression(x))
> Error in xy.coords(x, y, xlabel, ylabel, log) :
> 'x' and 'y' lengths differ
>
> As here the input to curve is an expression, as documented in the help, and
Not really, and certainly not in the sense you seem to understand it..
'expression(x)' is a call to the expression() function, and that
evaluates to a length-one expression vector. As ?expression says:
‘Expression’ here is not being used in its colloquial sense, that
of mathematical expressions. Those are calls (see ‘call’) in R,
and an R expression vector is a list of calls, symbols etc, for
example as returned by ‘parse’.
> the expression is simply x.
'Simply' untrue.
> What is the y mentioned in the error? There is no y used here.
Yes, there is. Please do read the code for 'curve':
y <- eval(expr, envir = list(x = x), enclos = parent.frame())
so you are trying to plot a length-1 expression vector against a
length-101 'x'.
As others have said, curve() is a convenience function, and its
requirements are rather picky. And you have already been given one
good solution, curve(I).
> Thank you for support.
> Abhilash B.
>
>
> On Sun, Jun 5, 2011 at 3:39 PM, Duncan Murdoch <murdoch.duncan at gmail.com>wrote:
>
>> On 11-06-05 1:07 PM, Abhilash Balakrishnan wrote:
>>
>>> Dear Sirs,
>>>
>>> I am a new user of the R package. When I try to use the curve function it
>>> confuses me.
>>>
>>> curve(x^2)
>>>>
>>> Works fine.
>>>
>>> curve(x)
>>>>
>>> Makes a complaint I don't understand. Why is x^2 valid and x is not?
>>>
>>
>> curve() is a convenience function, and it tries to guess what you mean.
>> Sometimes it gets it wrong.
>>
>> In the first case, it is clear you want to graph x^2. In the second it
>> guesses you have a function named x and want to graph that. You don't, so
>> it fails.
>>
>> Probably it could try again after the first failure, but I'd guess there
>> will always be strange cases where it does weird things.
>>
>> Duncan Murdoch
>>
>>
>>> I check the documentation of curve, and it says the first argument must be
>>> an expression containing x.
>>>
>>> expression(x)
>>>>
>>> Is an expression containing x.
>>>
>>> curve(expression(x))
>>>>
>>> Makes a different complaint and mentions different lengths of x and y (but
>>> I
>>> use no y here).
>>>
>>> I understand that plotting the function y(x) = x is rather silly, but I
>>> want
>>> to know what I am doing wrong, for the sake of my understanding of how R
>>> works.
>>>
>>> Thank you for support.
>>> Abhilash B.
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> 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.
>>>
>>
>>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list