3

で始まる以下に返されるシーケンスの各要素からベクトルを作成したいと思います(vector(vector欲しいものを手に入れる方法が間違っていることはわかっています。これは単なるプレースホルダーです。

3 つのシーケンスから最初の要素を取得し、["abc-de-fghi" smith barney] [def-hi-jklm" ox todd] を取得する方法に苦労しています。次に、2 番目の要素、3 番目などを取得します。 .

ご協力ありがとうございました。

(defn test-key-exclusion
    "This function takes csv-data1 (the includees) and tests to see
     if each includee is in csv-data2 (the includeds). This function
     also gathers enough other data, so that excludees (those not found),
     can be identified."

    [csv-data1 pkey-idx1 csv-data2 pkey-idx2 lnam-idx fnam-idx]

    (let [full-row-ret (map #(ret-non-match-rows csv-data2 pkey-idx2 pkey-idx1 %1) csv-data1)
          filtered-row-ret (filter (complement nil?) full-row-ret)]
        filtered-row-ret
        (vector     (map #(nth %1 pkey-idx1 nil)  filtered-row-ret)
                    (map #(nth %1 lnam-idx nil)   filtered-row-ret)
                    (map #(nth %1 fnam-idx nil)   filtered-row-ret))))

編集:解決策

複数のシーケンスの各要素からベクトルを作成するために、次のようにまとめました。

(defn test-key-exclusion
    "This function takes csv-data1 (the includees) and tests to see
     if each includee is in csv-data2 (the includeds). This function
     also gathers enough other data, so that excludees (those not found),
     can be identified."

    [csv-data1 pkey-idx1 csv-data2 pkey-idx2 lnam-idx fnam-idx]

    (map (fn [row]
            (vector (nth row pkey-idx1 nil)
                    (nth row lnam-idx nil)
                    (nth row fnam-idx nil)))

         (filter (complement nil?)
            (map #(ret-non-match-rows csv-data2 pkey-idx2 pkey-idx1 %1) csv-data1))))
4

1 に答える 1

7

必要なのはただのことだと思いますmap。複数のコレクションを取ることができます:

user> (map vector [1 2 3] [:a :b :c] ["a" "b" "c"])
([1 :a "a"] [2 :b "b"] [3 :c "c"])
于 2012-05-09T20:41:53.420 に答える