编辑:
数据真的是这样的。
1,000-00-000,GRABBUS,OCTOPUS,,M,26-Nev-12,,05 FRENCH TOAST ROAD,,VACANT,ZA,1867,(001) 111-1011,(002) 111-1000,,
我必须让它看起来很傻,因为它包含专有信息。
这是在使用 clojure-csv 创建向量向量之前的样子。
我使用了解析后的数字来简化它,但它们并没有被简化为一个值。我想从 clojure-csv 解析数据中挑选某些列并创建一个较小的 csv 行。
对于任何混淆,请接受我的歉意。
结束编辑:
您如何确定何时使用 reduce 或使用 pmap?
不久前,我在博客上收到了关于 reduce 的评论。具体来说,评论说 reduce 通常不能并行化,但 map (pmap) 可以。
什么时候使用或不使用reduce会有所不同,对于以下示例,它会有所不同吗?
谢谢你。
(def csv-row [1 2 3 4 5 6 7 8 9])
(def col-nums [0 1 4])
(defn reduce-csv-rowX
"Accepts a csv-row and a list of columns to extract, and
reduces the csv-row to the selected list using a list comprehension."
[csv-row col-nums]
(for [col-num col-nums
:let [part-row (nth csv-row col-num nil)]]
part-row))
(defn reduce-csv-row
"Accepts a csv-row and a list of columns to extract, and
reduces the csv-row to the selected list."
[csv-row col-nums]
(reduce
(fn [out-csv-row col-num]
(let [out-val (nth csv-row col-num nil)]
(if-not (nil? out-val)
(conj out-csv-row out-val))))
[]
col-nums))
编辑:
(defn reduce-csv-row "接受 csv 行和要提取的列列表,并将 csv 行减少到所选列表。" [csv-row col-nums] (reduce (fn [out-csv- row col-num] (let [out-val (nth csv-row col-num nil)] (conj out-csv-row out-val))) [] col-nums))