# [R] How to simplify

Gabor Grothendieck ggrothendieck at gmail.com
Wed Dec 7 15:59:25 CET 2005

```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 at gmail.com> wrote:
> Dear list,
> I have a list containing parameters (time and X1),  and have "n"
> similar data set like
> the following:
> > cal
> [[1]]
>  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
>
> [[2]]
>  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
>
> [[3]]
>  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
>
> [[4]]
> .......
>
> [[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[[1]][1]+a[[2]][1]+a[[3]][1]+.....)/n
> >mean.b<-(b[[1]][1]+b[[2]][1]+b[[3]][1]+.....)/n
> >mean.c<-(c[[1]][1]+c[[2]][1]+c[[3]][1]+.....)/n
> >mean.d<-(d[[1]][1]+d[[2]][1]+d[[3]][1]+.....)/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.