1

我遇到的问题可以归结为以下问题:当查询的结果是一个值时,sel / $返回一个数字,当它超过一个值时,它是一个序列:

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

产生 (2 4),但是

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

产量 2。

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

这是我的解决方法:

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

产生(2)。

4

1 回答 1

1

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

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

于 2013-05-05T13:58:16.787 回答