Hi again,
Is this approach correct, or should I rather use only one type of
factors (combined)? I must admit I am a bit confused by the different
options to store and manipulate data in R. As I understand,
data.frames are the preferred format, but I can't see how to frame
this example data in it (hence my resort to a list). Any advice
welcome (or reference).
baptiste
PS: off topic, why would it be that i receive messages from this list
but cannot anymore post without some "approval" being required? This
is probably a weird technical glitch of mine, I can't imagine my few
questions to this list having caused any inconvenience.
On 3 Apr 2008, at 11:27, baptiste Augui? wrote:> 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
> ______________________________
>
>
>
>
>
_____________________________
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