首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将字符串列表转换为闭包中的双精度列表?

如何将字符串列表转换为闭包中的双精度列表?
EN

Stack Overflow用户
提问于 2012-12-14 10:39:53
回答 2查看 529关注 0票数 1

如何在创建mymap的同时,将'mymap‘的值转换为Double列表而不是String列表?

代码语言:javascript
复制
(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))     
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-14 11:00:36

代码语言:javascript
复制
(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)])

另一个版本

代码语言:javascript
复制
(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)))
票数 0
EN

Stack Overflow用户

发布于 2012-12-14 22:04:25

因此,对于此数据的尾部/休息部分。您正在将一个匿名映射函数映射到一个字符串列表,然后将类型转换映射到每个子列表中的元素。

代码语言:javascript
复制
(def mymap
  (zipmap 
   (map #(str "NAT-" %) (map first raw-vector-list)) 
   (map #(map (fn [v] (Double/parseDouble v)) %)
     (map rest raw-vector-list))))

我怎样才能把类型转换成像below...And这样的函数,然后利用我的自定义方法?

代码语言:javascript
复制
(defn str-to-dbl [n] (Double/parseDouble n))

这段代码抱怨嵌套的#。

代码语言:javascript
复制
(def mymap
  (zipmap 
   (map #(str "NAT-" %) (map first raw-vector-list)) 
   (map #(map #(str-to-double %)
     (map rest raw-vector-list))))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13871883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档