【发布时间】:2019-07-25 22:38:05
【问题描述】:
我有一个表示 DataFrame 的地图向量。我想计算一个新列(向量中所有映射的键/值对)。需要一些帮助才能以最有效和惯用的方式执行此操作。
(def dt [{:foo 10 :bar 20 :cat "A"}
{:foo 15 :bar 10 :cat "B"}
{:foo 12 :bar 15 :cat "C"}
{:foo 16 :bar 22 :cat "A"}
{:foo 13 :bar 11 :cat "B"}
{:foo 10 :bar 19 :cat "C"}])
我想做的是定义 :baz = :foo + :bar。我可以通过如下映射操作完成计算。
(map #(+ (:foo %) (:bar %)) dt)
我更喜欢写一个函数,其中向量是 maps 是最后一个参数,这样我就可以用 thread-last 宏链接操作
类似这样的:
(->> dt
(filter #(= (:foo %) 10))
(compute-new-column #(...)))
我是 Clojure 和 FP 的初学者,因此也欢迎任何其他见解。
【问题讨论】:
-
抱歉,我的尝试不正确/具有误导性。我正在寻找的是 Christian
({:foo 10, :bar 20, :cat "A", :baz 30} {:foo 10, :bar 19, :cat "C", :baz 29})的如下输出
标签: clojure