Hi all,
I thought I remembered there was a method in the api somewhere that
would count the frequency of each unique item in a collection, but I
can't find it anymore. What would be a brief way to write that in
clojure?
(In ruby: array.inject(Hash.new(0)) {|hash,key| hash[key] += 1 ;
hash})
(defn frequencies [coll]
(reduce (fn [map val] (assoc map val (if (contains map val)
(get map val) 1)) #{})
)
On Dec 11, 9:21 am, bOR_ [EMAIL PROTECTED] wrote:
Hi all,
I thought I remembered there was a method in the api somewhere that
would count the frequency of each unique
I don't recall a histogram-like method, though I may just be forgetting.
(defn frequencies [coll]
(reduce
(fn [map val] (assoc map val (inc (get map val 1
{}
coll))
On Thu, Dec 11, 2008 at 9:33 AM, Dave Griffith
[EMAIL PROTECTED] wrote:
(defn frequencies [coll]
On Thursday 11 December 2008 06:33, Dave Griffith wrote:
On Dec 11, 9:21 am, bOR_ [EMAIL PROTECTED] wrote:
Hi all,
I thought I remembered there was a method in the api somewhere that
would count the frequency of each unique item in a collection, but
I can't find it anymore. What would
On Dec 11, 9:21 am, bOR_ [EMAIL PROTECTED] wrote:
I thought I remembered there was a method in the api somewhere that
would count the frequency of each unique item in a collection, but I
can't find it anymore. What would be a brief way to write that in
clojure?
I think what you want is:
Yup, five bugs by my count. Not bad for a one-liner. More coffee
necessary.
Same algorithm, but tested.
(defn frequencies [coll]
(reduce (fn [map val] (assoc map val (if (contains? map val) (+ 1
(get map val)) 1))) {} coll)
)
On Dec 11, 9:52 am, Randall R Schulz [EMAIL PROTECTED]
I've added a slightly modified version to clojure.contrib.seq-utils:
(defn frequencies
Returns a map from distinct items in coll to the number of times
they appear.
[coll]
(reduce (fn [counts x]
(assoc counts x (inc (get counts x 0
{} coll))
-Stuart Sierra
Slightly shorter version:
(defn frequencies
Returns a map from distinct items in coll to the number of
times they appear.
[coll]
(reduce (fn [counts x]
(merge-with + counts {x 1}))
{} coll))
On Dec 11, 9:14 am, Stuart Sierra