1

mymapの作成と同時に、「mymap」の値を文字列のリストではなくDoubleのリストに変換するにはどうすればよいですか?

(use '[clojure.string :only (join split)])
;(def raw-data (slurp "http://ichart.finance.yahoo.com/table.csv?s=INTC"))
;Downloaded and removed the first line
(def raw-data (slurp "table-INTC.csv"))


(def raw-vector-list
  (map
    #(split % #",")          ; anonymous map function to split by comma
    (split raw-data #"\n"))) ; split raw data by new line

(pr (take 1 raw-vector-list))

(def mymap 
  (zipmap 

    ;construct composite key out of symbol and date which is head of the list
    (map #(str "INTC-" %) (map first raw-vector-list))

    ;How do i convert these values to Double instead of Strings?
    (map rest raw-vector-list)))

(pr (take 1 mymap))     
4

2 に答える 2

0
(def mymap
  (zipmap 
    (map #(str "NAT-" %) (map first raw-vector-list)) 
    (map #(map (fn [v] (Double/parseDouble v)) %)
         (map rest raw-vector-list))))

(pprint (take 1 mymap))
-> (["NAT-1991-09-30" (41.75 42.25 41.25 42.25 3.62112E7 1.03)])

別のバージョン

(def mymap
  (map (fn [[date & values]]
         [(str "NAT-" date)
          (map #(Double/parseDouble %) values)])
       ;; Drop first non-parsable element in raw-vector-list
       ;; ["Date" "Open" "High" "Low" "Close" "Volume" "Adj Close"]
       (drop 1 raw-vector-list)))
于 2012-12-14T03:00:36.300 に答える
0

したがって、このデータのテール/レスト部分については。匿名のmap関数を文字列のリストにマッピングしてから、型変換を各サブリストの要素にマッピングします。

(def mymap
  (zipmap 
   (map #(str "NAT-" %) (map first raw-vector-list)) 
   (map #(map (fn [v] (Double/parseDouble v)) %)
     (map rest raw-vector-list))))

型変換を以下のような関数に引き出すにはどうすればよいですか...そしてカスタムメソッドを利用するにはどうすればよいですか?

(defn str-to-dbl [n] (Double/parseDouble n))

このコードは、ネストされた#について文句を言います。

(def mymap
  (zipmap 
   (map #(str "NAT-" %) (map first raw-vector-list)) 
   (map #(map #(str-to-double %)
     (map rest raw-vector-list))))
于 2012-12-14T14:04:24.927 に答える