2012-05-07 3 views
1

(map #(nth %1 0 nil) v1)を使用してシーケンス[44 1 11]を生成し、同じ関数を連続して呼び出してフィードしたいです。私は、Clojureが組み込みのものか、組み込みのものが他に使うのかは分かりません。複数の呼び出しを生成して1つのArgでシーケンスする方法

ここに詳細があります。

(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))) 

だから私はこのようなRET-非マッチ行に(マップ)[44 1 11]を供給する方法で助けを求めています:これら二つのベクトルを考えると

(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

関連する問題