[R] sum

Tony Plate tplate at blackmesacapital.com
Thu Apr 24 05:08:03 CEST 2003


I've been meaning to submit the abind package to CRAN for a long time 
now.  I just did it.
Here's how one could do the matrix-list-sum using abind():

 > library(abind)
 > set.seed(1)
 > m <- lapply(1:3,function(i) matrix(sample(10,8,rep=T),2,4))
 > m
[[1]]
      [,1] [,2] [,3] [,4]
[1,]    1    1    1    4
[2,]    6    7    1    7

[[2]]
      [,1] [,2] [,3] [,4]
[1,]    7   10    1    7
[2,]    7    6    3    2

[[3]]
      [,1] [,2] [,3] [,4]
[1,]   10    6    9    1
[2,]    3    4    2    2

 > a <- do.call("abind", c(m, list(along=3)))
 > apply(a, 1:2, sum)
      [,1] [,2] [,3] [,4]
[1,]   18   17   11   12
[2,]   16   17    6   11
 > m[[1]] + m[[2]] + m[[3]]
      [,1] [,2] [,3] [,4]
[1,]   18   17   11   12
[2,]   16   17    6   11
 > all(apply(a, 1:2, sum) == m[[1]] + m[[2]] + m[[3]])
[1] TRUE
 >

-- Tony Plate

At Wednesday 07:58 PM 4/23/2003 -0400, Liaw, Andy wrote:
> > From: Peter Dalgaard BSA [mailto:p.dalgaard at biostat.ku.dk]
> >
> > Barry Rowlingson <B.Rowlingson at lancaster.ac.uk> writes:
> >
> > > Luis Silva wrote:
> > > > Dear helpers
> > > > I have a list where each element is a matrix (the list is obtained
> > > > with lapply). I want to sum those matrices. Is there a function to
> > > > do that? The sum function sums all the elements...
> >
> > >   Here's a one-liner that converts your list into an array (by
> > > unlisting it and then packing into an array with the right three
> > > dimensions) and then runs apply(...,c(1,2),sum) to get the
> > answer you
> > > want:
> >
> > Didn't someone do an abind() function at some point? (Generalizing
> > cbind/rbind)
>
>I believe there's an abind for Splus on StatLib, if I remember correctly by
>Tony Plate & Rich Heiberger.  Do not believe it was made available for R,
>though I believe it'd be very useful.
>
>[snipped]
> > However, aren't we ignoring the obvious?:
> >
> > s<-0;(for(a in l)s<-s+a)
>
>Indeed!  (I guess somehow the evil of for loops in the old S in deeply
>engrained in some of us.)  Altough I like Sundar's version, too.
>
>Cheers,
>Andy
>
>
>------------------------------------------------------------------------------
>Notice: This e-mail message, together with any attachments, cont... 
>{{dropped}}
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://www.stat.math.ethz.ch/mailman/listinfo/r-help



More information about the R-help mailing list