Thanks again, Greg. I must have gotten up on the wrong side of the keyboard this morning and been having a spate of dim insight. What you've said here makes things clearer.
DAV -----Original Message----- From: Greg Snow [mailto:538...@gmail.com] Sent: Monday, April 16, 2012 5:42 PM To: David A Vavra Cc: r-help@r-project.org Subject: Re: [R] Effeciently sum 3d table Here is a simple example: > mylist <- replicate(4, matrix(rnorm(12), ncol=3), simplify=FALSE) > A <- Reduce( `+`, mylist ) > B <- mylist[[1]] + mylist[[2]] + mylist[[3]] + mylist[[4]] > all.equal(A,B) [1] TRUE Basically what Reduce does is it first applies the function (`+` in this case) to the 1st 2 elements of mylist, then applies it to that result and the 3rd element, then that result and the 4th element (and would continue on if mylist had more than 4 elements). It is basically a way to create functions like sum from functions like `+` which only work on 2 objects at a time. Another way to see what it is doing is to run something like: > Reduce( function(a,b){ cat("I am adding",a,"and",b,"\n"); a+b }, 1:10 ) The Reduce function will probably not be any faster than a really well written loop, but will probably be faster (both to write the command and to run) than a poorly designed naive loop application. On Mon, Apr 16, 2012 at 12:52 PM, David A Vavra <dava...@verizon.net> wrote: > Thanks Greg, > > I think this may be what I'm after but the documentation for it isn't > particularly clear. I hate it when someone documents a piece of code saying > it works kinda like some other code (running elsewhere, of course) making > the tacit assumption that everybody will immediately know what that means > and implies. > > I'm sure I'll understand it once I know what it is trying to say. :) There's > an item in the examples which may be exactly what I'm after. > > DAV > > > -----Original Message----- > From: Greg Snow [mailto:538...@gmail.com] > Sent: Monday, April 16, 2012 11:54 AM > To: David A Vavra > Cc: r-help@r-project.org > Subject: Re: [R] Effeciently sum 3d table > > Look at the Reduce function. > > On Mon, Apr 16, 2012 at 8:28 AM, David A Vavra <dava...@verizon.net> wrote: >> I have a large number of 3d tables that I wish to sum >> Is there an efficient way to do this? Or perhaps a function I can call? >> >> I tried using do.call("sum",listoftables) but that returns a single value. >> >> So far, it seems only a loop will do the job. >> >> >> TIA, >> DAV > > > -- > Gregory (Greg) L. Snow Ph.D. > 538...@gmail.com > -- Gregory (Greg) L. Snow Ph.D. 538...@gmail.com ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.