2012-05-07 37 views
1

要採取使用(map #(nth %1 0 nil) v1)和飼料(圖)即進入連續調用同一個函數生成的序列[44 1 11]。我只是不確定哪個Clojure內置或內置的用於其他用途。我如何生成多次調用函數的一個精氨酸在時序

這是細節。

鑑於這兩個向量:

(def v1 [[44 2 3 4 5] 
     [1 6 7 5 10] 
     [11 12 13 14 15]]) 

(def v2 [[1 2 3 4 44] 
     [1 6 7 5 1] 
     [11 12 13 14 44]]) 

這個功能

(defn ret-non-match-rows 
    "Expects a sequence of sequences, like what is returned from clojure-csv. 
    Returns all csv rows that do not match cmp-val at cmp-col-idx." 

    [s-o-s cmp-val cmp-col-idx] 

    (filter (complement nil?) 
     (map #(if (ret-col-match %1 cmp-val cmp-col-idx) nil %1) s-o-s))) 

所以,我在如何餵養求助(圖)[44 1 11]爲RET-不匹配,行這樣

(ret-non-match-rows v2 44 4) 
(ret-non-match-rows v2 44 1) 
(ret-non-match-rows v2 44 11) 

但使用Clojure內置插件來生成這些單獨的調用。

謝謝。

編輯:

下面給我我想要的東西,但我不知道是否有一個更清潔的方式來做到這一點。

(def ssn-1 [44 1 11]) 
(def tst (partial ret-non-match-rows v2 4)) 
(map #(tst %1) ssn-1) 

我找回了一系列的序列,並解析它以得到我的結果。

+0

我無法理解的問題。你是否在尋求幫助來編寫ret-non-match-rows,或者ret-col-match或其他什麼? – user100464

+0

v2是什麼?你似乎沒有在任何地方使用它。 –

+0

我編輯了原帖,希望它更清楚一點。 – octopusgrabbus

回答

1

也許你想這樣的:

(map (partial ret-non-match-rows v2 44) (map first v1)) 

(假設在第一個例子調用4是筆誤,應該是44

+0

@octopusgrabbus編輯,但我不明白它的意思是4是在V2匹配列數。列號與什麼匹配? –

+0

我從v1的col 0獲得了第一組值。我需要比較'(map#(nth%1 0 nil)v1)'生成的序列'[44 1 11]'中的每個元素與v2列4中的每個值。第4列包含'[44 1 44]' – octopusgrabbus

+0

我接受這個,因爲你的方向讓我需要去的地方。我完全忘了部分。 – octopusgrabbus

相關問題