CRAN
Comprehensive R Archive Network (CRAN)は、storeRのディストリビューション、拡張機能、ドキュメント、バイナリを保存する世界中のサーバーのネットワークです。 ミラーサーバーのほとんどは世界中の大学でホストされており、活発なオープンソースコミュニティが形成されている。 このリポジトリは、一般にGPLライセンスの下で利用可能な多数のアドオンパッケージにより、Rコミュニティによって広く利用されている。 ユーザーはCRANリポジトリを利用して選択したパッケージをダウンロードできるが、これらのパッケージは完全にNetezzaの外部であることを考慮する必要がある。
CRANパッケージはNetezzaにインストールできる。 NetezzaR ライブラリパッケージは CRAN パッケージのインストールと管理のためのツールを提供します。
nzInstallPackages, nzIsPackageInstalled
パッケージをインストールするには、'nzInstallPackages() を使用する。 ホストとSPUの両方で、2段階のインストールプロセスがデフォルトであることに注意すること。 パッケージのインストールに成功した場合の関数出力(インストール・ログ)を次の例に示します。
nzConnectDSN('NetezzaSQL')
nzInstallPackages("http://cran.r-project.org/src/contrib/bitops_1.0-4.1.tar.gz")
#Host:
#Installing: /nz/export/ae/workspace/nz/r_ae/bitops_1.0-4.1.tar.gz
#* installing to library '/nz/export/ae/languages/r/2.10/host/lib64/R/library'
#* installing *source* package 'bitops' ...
#** libs
#/nz/export/ae/sysroot/host/bin/i686-rhel4-linux-gnu-gcc -std=gnu99
#-I/nz/export/ae/languages/r/2.10/host/lib64/R/include -m32 -fpic -m32 -c
#bit-ops.c -o bit-ops.o
#/nz/export/ae/sysroot/host/bin/i686-rhel4-linux-gnu-gcc -std=gnu99
#-I/nz/export/ae/languages/r/2.10/host/lib64/R/include -m32 -fpic -m32 -c
#cksum.c -o cksum.o
#/nz/export/ae/sysroot/host/bin/i686-rhel4-linux-gnu-gcc -std=gnu99 -shared
#-m32 -L/nz/export/ae/sysroot/host/lib -L/nz/export/ae/sysroot/host/usr/lib
#-L/nz/export/ae/sysroot/host/lib -o bitops.so bit-ops.o cksum.o
#-L/nz/export/ae/languages/r/2.10/host/lib64/R/lib -
lR #** R
#** preparing package for lazy loading
#** help
#*** installing help indices
#** building package indices ...
#* DONE (bitops)
#SPUs:
#Installing: /nz/export/ae/workspace/nz/r_ae/bitops_1.0-4.1.tar.gz
#test: ==: binary operator expected
#test: ==: binary operator expected
#* installing to library /nz/export/ae/languages/r/2.10/spu/lib64/R/library #*
installing *source* package bitops ...
#** libs
#gcc -std=gnu99 -I/nz/export/ae/languages/r/2.10/spu/lib64/R/include -m32
#-fpic -m32 -c bit-ops.c -o bit-ops.o
#gcc -std=gnu99 -I/nz/export/ae/languages/r/2.10/spu/lib64/R/include -m32
#-fpic -m32 -c cksum.c -o cksum.o
#gcc -std=gnu99 -shared -m32 -L/nz/export/ae/sysroot/spu/lib
#-L/nz/export/ae/sysroot/spu/usr/lib -liconv -o bitops.so bit-ops.o cksum.o
#-L/nz/export/ae/languages/r/2.10/spu/lib64/R/lib -
lR #** R
#** preparing package for lazy loading
#** help
#*** installing help indices
#** building package indices ...
#* DONE (bitops)
To verify package installation, use nzIsPackageInstalled().
nzIsPackageInstalled(bitops)
# host spus
# TRUE TRUE
nzIsPackageInstalled(RODBC)
# host spus
# TRUE FALSE詳細
nzInstallPackages()関数は指定された CRAN パッケージをNetezzaに送信し、このパッケージをインストールする。
- pkgパラメータの値が'
http://で始まる場合、それはウェブアドレスであると仮定される。 パッケージは、指定された URL からダウンロードされ、 Netezza に送信されます。 - pkgパラメータ値がローカルファイルの場合、Netezza に送信される。
nzIsPackageInstalled()関数はパッケージがNetezzaホストと SPU にインストールされているかどうかをチェックする。 パッケージがホストまたはSPUで見つかった場合、画面にメッセージが表示される。 指定された場所にパッケージが見つかれば、戻り値は'
TRUEである。 指定された場所にパッケージが見つからない場合、戻り値は'FALSEである。nzInstallPackages(pkg, installOnSpus = TRUE)
nzIsPackageInstalled(package)ここで:- pkg
- ローカル・ファイル・パスまたはウェブ・アドレスを指定する。ウェブ・アドレスはhttp://で始まる必要がある。
- installOnSpus
- オプションです。
FALSEの場合、パッケージはSPUにインストールされない。 - パッケージ
- チェックするパッケージ名を指定する。
注:引数は'nzInstallPackages()関数と'nzIsPackageInstalled()関数で使われる。
外部パッケージはクライアントでもサーバーでも使用できる。 以下の例では、CRANからダウンロードした外部の'
gamパッケージを使用して、クライアント上でGAMモデルを構築している。 このモデルをサーバーにアップロードし、データベース内でNetezzaテーブルのレコードに適用する。 このパッケージはNetezzaとクライアントマシンの両方にインストールされ、ロードされ、モデル'model1を構築するのに使われる。 このパッケージを使用する'pred関数は、Netezzaシステム上で'nz.data.frameに適用される。nzInstallPackages("http://cran.r-project.org/src/contrib/akima_0.5-4.tar.gz")
#(... output log from installation omitted for clarity)
nzInstallPackages("http://cran.r-project.org/src/contrib/gam_1.04.tar.gz")
#(... output log from installation omitted for clarity)
install.packages("gam")
library(gam)
library(nzr)
nzConnect("user","password","tt4-r040","nza")
#
# model is build in R locally on the client
#
model1 = gam(Sepal.Length~Petal.Length+Petal.Width, iris, family=gaussian)
nzIris = nz.data.frame("iris")
pred <- function(x, model1) {
require(gam)
predict(model1, data.frame(Petal.Length=as.numeric(x[[2]]),
Petal.Width=as.numeric(x[[3]])))
}
#
# then the model is applied to all rows in the database
#
nzApply(nzIris, FUN=pred, model1=model1)