On Mon, Apr 12, 2010 at 11:15 PM, Alan Busby <thebu...@gmail.com> wrote:
> On Tue, Apr 13, 2010 at 11:54 AM, Douglas Philips <d...@mac.com> wrote: > >> On 2010 Apr 12, at 10:48 PM, Glen Rubin wrote: >> >>> I am working with a collection of integer sequences ...(e.g. >>> coll: >>> ((3 7 3 5 9 2 0 8 4 0 1 2323 4 11...) (243 4 664 478 3948...) (6 3 7 4 >>> 3335 2 4 5 7 6...)...) >>> >>> I want to create an average sequence such that all of the first >>> elements are averaged, all of the second elements, etc.... >>> >>> However, I am unable to manipulate the collection. If I try something >>> simple like: >>> >>> (map + coll) >>> >>> I get java.lang.ClassCastException >>> >> >> Take a look at apply, it sounds as if you want something akin to: >> (apply map + coll) >> >> --Doug > > > Or maybe? > Further help lurking in Clojure IRC. ;) > > user=> (use '[clojure.contrib.seq-utils :only (flatten)]) > nil > user=> (map + (flatten '((1 2 3) (4 5 6)))) > (1 2 3 4 5 6) > I don't even understand that result.. but what the OP asked for is for a function foo such that (foo '((1 2 3) (4 5 6))) returns (5 7 9) - a list of the sums in order. (apply map +) does that. Except what the OP really wants the average instead of the sum.. there's probably an arithmetic mean function in contrib somewhere, but it's easy to roll your own: (defn mean [& rest] (/ (apply + reset) (count rest))) And then use the same trick with it in place of +: (apply map mean '((1 2 4) (2 4 6) (1 3 5))) which yields (4/3 3 5) -- Mark J. Reed <markjr...@gmail.com> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en To unsubscribe, reply using "remove me" as the subject.