当结果为一个值时,为什么Incanter返回数字而不是序列?

时间:2013-05-05 13:52:19

标签: clojure incanter

我遇到的问题可以解决为以下问题:当查询结果为一个值时,sel / $返回一个数字,当它是多个值时,它是一个序列:< / p>

(with-data (to-dataset [[1 2] [3 4]])
    ($ :col-1))

收益率(2 4),但

(with-data (to-dataset [[1 2]])
    ($ :col-1))

产生2。

我希望它始终是一个序列,因为我想要e。 G。将+应用于序列。我想避免使用(seq?)检查类型。有任何想法吗?这种Incanter的行为是否合理?

这是我的解决方法:

(let [seq-it (fn [a] (if (seq? a) a (list a)))]
  (with-data (to-dataset [[1 2]])
    (->> ($ :col-1) 
         (seq-it))))

产生(2)。

1 个答案:

答案 0 :(得分:1)

我认为这是Incanter中的一个错误(或者您可能认为这是一个应该修复的严重设计缺陷)。

这可能与此处讨论的问题有关,其中1x1矩阵结果转换为双精度: