4

私はRの代わりにClojure/Incanterを検討しており、clojure/incanterに次の機能があるかどうか疑問に思っています。

  1. SQLステートメントの結果をデータセットとしてインポートします(これはRでdbGetQueryを使用して行います)。
  2. データセットの形状を変更します-行を「ピボット」/「アンピボット」とも呼ばれる列に変換します-これは、Rでreshape、reshape2パッケージを使用して行います(Rの世界では、データの溶解とキャストと呼ばれます)。
  3. 再形成されたデータセットをSQLテーブルに保存します(RMySQLのdbWriteTable関数を使用してRでこれを行います)
4

1 に答える 1

2

core.matrixに興味があるかもしれません。これは、多次元配列と数値計算機能をClojureに導入するプロジェクトです。まだ非常に活発な開発中ですが、すでに使用可能です。

特徴:

  • クリーンで機能的なAPI
  • 適切な多次元配列
  • Clojureデータを操作する慣用的なスタイル。たとえば、ネストされたベクトル[[1 2] [3 4]]は2x2行列として自動的に使用できます。
  • 期待する可能性のあるすべてのアレイ再形成機能。
  • 通常のすべての行列演算(乗算、スケーリング、行列式など)
  • 複数のバックエンドマトリックス実装のサポート(例:高性能のJBLAS(ネイティブコードを使用))

ここにいくつかのサンプルコードを参照してください:

  ;; a matrix can be defined using a nested vector
  (def a (matrix [[2 0] [0 2]]))

  ;; core.matrix.operators overloads operators to work on matrices
  (* a a)

  ;; a wide range of mathematical functions are defined for matrices
  (sqrt a)  

  ;; you can get rows and columns of matrices individually
  (get-row a 0)

  ;; Java double arrays can be used as vectors
  (* a (double-array [1 2]))

  ;; you can modify double arrays in place - they are examples of mutable vectors
  (let [a (double-array [1 4 9])]
    (sqrt! a)   ;; "!" signifies an in-place operator
    (seq a))

  ;; you can coerce matrices between different formats
  (coerce [] (double-array [1 2 3]))

  ;; scalars can be used in many places that you can use a matrix
  (* [1 2 3] 2)

  ;; operations on scalars alone behave as you would expect
  (* 1 2 3 4 5)

  ;; you can do various functional programming tricks with matrices too
  (emap inc [[1 2] [3 4]])

core.matrixはRichHickeyによって公式のClojurecontribライブラリとして承認されており、Incanterは将来core.matrixの使用に切り替える可能性があります。

SQLテーブルのサポートはcore.matrixに直接含まれていませんが、結果セットをclojure.java.jdbcからcore.matrix配列に変換するためのワンライナーにすぎません。次のようなものでうまくいくはずです。

(coerce [] (map vals resultset))

次に、core.matrixを使用して、必要に応じて変換および処理できます。

于 2013-02-05T02:08:41.693 に答える