# Re: [R] How to simplify

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Thu 08 Dec 2005 - 01:59:25 EST

I suggest that when displaying test data in a post that you do it like this:

dput(cal)

since then others can simply copy and paste it into their session.

At any rate, using this test data:

cal <- list(A = data.frame(time = 1:3, X1 = 1:3),

B = data.frame(1:3, X1 = 3:5))

Pick off the second element of each list component, turn the result into a data frame and take the row means:

rowMeans(as.data.frame(lapply(cal, "[", 2)))

Since the times are irregular, you might prefer to represent cal as a multivariate zoo object using the zoo library:

library(zoo)
cal.zoo <- do.call("merge", lapply(cal, function(x) zoo(x[,2], x[,1])))

Once you have done this and other operations simplify. For this one its just:

rowMeans(cal.zoo)

or to plot them all

plot(cal.zoo) # separate plots
plot(call.zoo, plot.type = "single") # all on one plot

On 12/7/05, Rhett Eckstein <glaxowell@gmail.com> wrote:
> Dear list,
> I have a list containing parameters (time and X1), and have "n"
> similar data set like
> the following:
> > cal
> []
> time X1
> 1 0.0 10.006306
> 2 0.5 9.433443
> 3 1.0 8.893405
> 4 2.0 7.904274
> 5 4.0 6.243807
> 6 6.0 4.932158
> 7 8.0 3.896049
> 8 10.0 3.077604
>
> []
> time X1
> 1 0.0 10.015972
> 2 0.5 9.460064
> 3 1.0 8.935039
> 4 2.0 7.970755
> 5 4.0 6.343151
> 6 6.0 5.047900
> 7 8.0 4.017131
> 8 10.0 3.196856
>
> []
> time X1
> 1 0.0 9.985741
> 2 0.5 9.552583
> 3 1.0 9.138239
> 4 2.0 8.362664
> 5 4.0 7.003394
> 6 6.0 5.865057
> 7 8.0 4.911747
> 8 10.0 4.113382
>
> []
> .......
>
> [[n]]
> .......
>
> And I would like to put all X1( when time=0) together, time=0.5,1...
> are the same.
> then calculate the mean value.
> > a<-list()
> > b<-list()
> > c<-list()
> > d<-list()
> > e<-list()
> .......
> > for(i in 1:n){
> + a[[i]]<-cal[[i]][1,2]
> + b[[i]]<-cal[[i]][2,2]
> + c[[i]]<-cal[[i]][3,2]
> + d[[i]]<-cal[[i]][4,2]
> + e[[i]]<-cal[[i]][5,2]
> + .........
> }
> >mean.a<-(a[]+a[]+a[]+.....)/n
> >mean.b<-(b[]+b[]+b[]+.....)/n
> >mean.c<-(c[]+c[]+c[]+.....)/n
> >mean.d<-(d[]+d[]+d[]+.....)/n
> >.............
> >xy<-c(mean.a,mean.b,mean.c,mean.d,........)
> But the way I use seem not very smart.
> So please give me some hints to the simplify this.
> Sincerely!!
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help