[R] data.frame or list

baptiste Auguié ba208 at exeter.ac.uk
Thu Apr 3 12:27:03 CEST 2008


Dear R list,

I'm having difficulties in choosing between a list or a data.frame,  
or an array for the storage and manipulation of my data (example  
follows). I've been using the three for different purposes but I  
would rather like to know which is more adapted to what task.

Here is the data I'm currently working on: 200 observations, each  
observation being a vector of length 1000 depending on several  
factors ("polarisation", "pitch", "dose", "size")



> x <- seq(1,100,length = 1000)
> observations <- matrix( rnorm(200*1000), ncol = 200)
>
> # factors
> polarisation <- rep(c("0","90"), each = 100, length = 200)
> pitch <- rep(1:5, length = 200)
> dose <- rep(1:2, each =100, length = 200)
> size <- rep(letters[1:6], each =100, length = 200)
>
> my.data <- list(x = x,
> 			observations = as.data.frame(observations),
> 			polarisation = factor(polarisation),
> 			pitch = factor(pitch),
> 			dose = factor(dose),
> 			size = factor(size))



I would like to be able to manipulate the data in "observations"  
using the factors as opposed to column indices. For instance, I could  
plot all the observations corresponding to polarisation == "90" and  
pitch == "1", like in,

> with(my.data , matplot(x, subset((pitch == "1") & (polarisation ==  
> "90"), observations, type="l" )))


which doesn't work, so I've had to use,

> with(my.data , matplot(x, observations[,(pitch == "1") &  
> (polarisation == "90")], type="l" ))


Is this a sensible way to store and manipulate this sort of data? Is  
there anything more appropriate I've overlooked using data.frames only?

Many thanks,

baptiste



_____________________________

Baptiste Auguié

Physics Department
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag
http://projects.ex.ac.uk/atto



More information about the R-help mailing list