問題があります:
- PostgreSQL で使用できる R パッケージと関数のリスト。
- PL/R で使用するパッケージ ( Kendallなど) のインストール
- PostgreSQL 内で R 関数を呼び出す
利用可能な R パッケージの一覧表示
Q.1. どの R モジュールがロードされているかを調べるにはどうすればよいですか?
SELECT * FROM r_typenames();
これは利用可能なタイプを示していますが、Kendall( X, Y )
ロードされているかどうかを確認するにはどうすればよいでしょうか? たとえば、ドキュメントには次のように表示されます。
CREATE TABLE plr_modules (
modseq int4,
modsrc text
);
これにより、レコードを挿入してKendall
ロードすることを指示できるように見えますが、次のコードでは、確実にロードされるようにする方法が構文的に説明されていません。
INSERT INTO plr_modules
VALUES (0, 'pg.test.module.load <-function(msg) {print(msg)}');
Q.2. ロードしようとすると、上記の行はどのようになりますKendall
か?
Q.3. 適用可能ですか?
R パッケージのインストール
「シナプス」パッケージ マネージャーを使用して、次のパッケージがインストールされています。
r-base
r-base-core
r-base-dev
r-base-html
r-base-latex
r-cran-acepack
r-cran-boot
r-cran-car
r-cran-chron
r-cran-cluster
r-cran-codetools
r-cran-design
r-cran-foreign
r-cran-hmisc
r-cran-kernsmooth
r-cran-lattice
r-cran-matrix
r-cran-mgcv
r-cran-nlme
r-cran-quadprog
r-cran-robustbase
r-cran-rpart
r-cran-survival
r-cran-vr
r-recommended
Q.4. ケンドールがそこにいるかどうかはどうすればわかりますか?
Q.5. そうでない場合、どのパッケージに入っているかを調べるにはどうすればよいですか?
Q.6. でのインストールに適したパッケージに含まれていない場合apt-get
( aptitude
, synaptic
, dpkg
, あなたは何を持っていますか)、Ubuntu にインストールするにはどうすればよいですか?
Q.7. インストール手順はどこに文書化されていますか?
R 関数の呼び出し
次のコードがあります。
EXECUTE 'SELECT '
'regr_slope( amount, year_taken ),'
'regr_intercept( amount, year_taken ),'
'corr( amount, year_taken ),'
'sum( measurements ) AS total_measurements '
'FROM temp_regression'
INTO STRICT slope, intercept, correlation, total_measurements;
このコードは PostgreSQL 関数を呼び出してcorr
、データに対するピアソンの相関を計算します。理想的には、次のことを行いたいと思います( に切り替えcorr
てplr_kendall
):
EXECUTE 'SELECT '
'regr_slope( amount, year_taken ),'
'regr_intercept( amount, year_taken ),'
'plr_kendall( amount, year_taken ),'
'sum( measurements ) AS total_measurements '
'FROM temp_regression'
INTO STRICT slope, intercept, correlation, total_measurements;
Q.8. 自分で書く必要がありplr_kendall
ますか?
Q.9. ウォークスルーする簡単な例はどこにありますか:
- R モジュールを PG にロードします。
- 目的の R 関数の PG ラッパーを作成します。
- SELECT から PG ラッパーを呼び出します。
たとえば、最後の 2 つの手順は次のようになります。
create or replace function plr_kendall( _float8, _float8 ) returns float as '
agg_kendall(arg1, arg2)
' language 'plr';
CREATE AGGREGATE agg_kendall (
sfunc = plr_array_accum,
basetype = float8, -- ???
stype = _float8, -- ???
finalfunc = plr_kendall
);
そして、SELECT
上記のように?
ありがとうございました!