我试图从SQL查询中将最大和最小结果拉到Clojure中,以便我可以对它们执行数学分析,但我不确定为什么出现错误。在Clojure中获取最大值和最小值
我已经使用代码中的最大和最小函数来尝试并确定这些结果,尽管我不断收到两条似乎与我使用:计数器关键字的方式有关的错误。
从SQL查询地图返回的数据是这样的:
{:date1 "20131007", :data "object1", :counter 1000}
{:date1 "20131007", :data "object2", :counter 50}
{:date1 "20131007", :data "object3", :counter 230}
当我使用此代码:
minvalue(min(map(keyword :counter)data2))
maxvalue(max(map(keyword :counter)data2))
valrange(- maxvalue minvalue)
valpc(* (/ valrange 100) 10)
x(- maxvalue valpc)
我当然希望MINVALUE被设置为50和maxvalue设置为1000虽然我得到此错误:
java.lang.ClassCastException: clojure.lang.LazySeq cannot be cast to java.lang.Number
如果我删除从代码中的地图功能,然后再次运行它,我得到这个错误:
java.lang.ClassCastException: clojure.lang.Keyword cannot be cast to java.lang.Number
任何帮助表示赞赏这是我完全被卡住(和它可能非常ovbious我”我是Clojure的新手)!由于
甲分解出来的共同性关于性能的注意事项:如果你有更多的地图要处理,使用reduce(像'(reduce min(:counter(first maps))(map:counter(rest maps)))')会比应用更有效率。 – noisesmith