[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