Clojure:有没有更惯用的方法来处理嵌套向量?

时间:2016-07-05 12:39:04

标签: clojure

我想限制我从Poisson的分布中生成的样本。 原始数据就像

[[2 12] [3 14]] (samples)

这里,[2 12]也对应于分布样本[P1 P2],[3 14]。 我想用最大值上限P1和P2,比如说

[4 12] (max-values)

使用这些参数,我想输出(我想保留向量)

[[2 12] [3 12]]

这很简单,但我不知道我的方式是否非常惯用:

(defn cap-poisson-samples
  "Cap poisson samples to meet the expactations
   if required"
  [data max-values]
  (mapv
    (fn [x]
      (mapv (fn [u v] (if (> u v) v u)) x max-values))
    data))

有人告诉我,过去避免使用嵌套map会更好,但我不知道它是否属实。

我知道prewalk存在,但无法传递两个输入(例如我的第二个mapv)。 我也可以使用for,但它更重。

一般来说,当我处理两个向量时,我必须处理相同的索引时,我很失落。我在clojure中搜索;核心,但我没有找到任何。 所以我通常使用formapv,具体取决于索引是否重要这一事实。

由于

0 个答案:

没有答案