2008/9/23 glaporta <glaporta at freeweb.org>:>
> HI there,
>
> why these lines of code are correct
> plot(count~spray, data = InsectSprays)
> plot(InsectSprays$count)
>
> but this return an error:
> plot(count, data = InsectSprays);
>
> "data" method is not implemented in plot?!
The 'plot' function, like many functions in R, does different things
depending on what its first parameter is...
For plot(count~spray, data=InsectSprays) the first parameter is a
formula, so what is really called is 'plot.formula'. This gets the
names from the formula (count~spray) finds them in the 'data'
parameter and does a plot.
For plot(InsectSprays$count) you've taken the 'count' vector out of
the data frame, so the ordinary plot function is called.
If you do plot(count, data=InsectSprays), then 'count' here is just a
bare word, so R looks up 'count' as an object, but doesn't find it
(as
long as there's no 'count' object in your workspace).
You can do plot(~count, data=InsectSprays), but you get a slightly
different plot than plot(count$InsectSprays). Compare and contrast the
following:
> is=data.frame(count=runif(10),spray=runif(10))
> plot(count,data=is)
Error in plot(count, data = is) : object "count" not found
> plot(~count,data=is)
> plot(count~1,data=is)
> plot(is$count)
Barry