[R] Plot error
Richard.Cotton at hsl.gov.uk
Richard.Cotton at hsl.gov.uk
Thu May 28 16:21:01 CEST 2009
> I want to plot data such that the 3 time points(a,b,c) lie on the X-axis
and
> the values of these times points are on Y-axis for n samples (e.g.100).
>
> So, I have an object x, dim 100 4, it is a dataframe (when checked the
> class)
> x =
> name a b c
> 1 0.11 1.11 0.86
> 2 . . .
> 3 . . .
> .
> .
> .
> 100
>
> so when i say:
>
> > plot(1:3, x[,2:4], type="l") ----- I get the error below
>
> Error in xy.coords(x, y, xlabel, ylabel, log) :
> (list) object cannot be coerced to type 'double'
>
> However if I do:
> > plot(1:3, x[1,2:4], type="l") ------ It works for the 1st row, and
each
> > individual row BUT NOT ALL ROWS
>
> Please could someone explain what is happening here?
>
> I wonder if I need to use 'lines' for the remaining, BUT I have another
> dataset y with same dimensions as x, which I want to plot on the same
> graph/plot to see the difference between x and y.
Your data looks like this:
x <- data.frame(name=sample(letters, 10), a=runif(10), b=rnorm(10),
c=rlnorm(10))
The problem is that the subset x[,2:4] is also a data frame, not a matrix.
class(x[,2:4]) #[1] "data.frame"
The simplest thing is probably to use lines, as you say.
row <- seq_len(nrow(x))
xx <- x[,2:4]
plot(row, xx$a, ylim=range(xx), type="l")
lines(row, xx$b, col="blue")
lines(row, xx$c, col="green")
Regards,
Richie.
Mathematical Sciences Unit
HSL
------------------------------------------------------------------------
ATTENTION:
This message contains privileged and confidential inform...{{dropped:20}}
More information about the R-help
mailing list