質問

私は、Rで統計モデルを作成する多くのアナリストがいるプロジェクトに取り組んでいます。通常、モデルオブジェクト(.RDATAファイル)を提供し、さまざまなデータセットの実行を自動化します。

私の問題は次のとおりです。

  • データベースを使用して、これらの.rdataファイルをそこに保存できますか?これを行うことに関するヒントはありますか? (現在、.rdataファイルをディスクに保存し、データベースを使用して位置情報を保存します)

  • モデルを作成する前にデータの前処理を行った他のアナリストから多くのRスクリプトを取得します。 PMMLを使用してこのプロセスを手動介入なしで繰り返し可能にする経験がある人はいますか? PMMLは、前処理手順を保存し、マークアップタグとして手順をモデリングし、新しいデータセットで同じことを繰り返します。

提案とフィードバックをありがとう。

-ひどい

役に立ちましたか?

解決

はい、これはrにリンクされたmysqlを使用して可能です RMySQLDBI パッケージ、または経由 RODBC また RJDBC パッケージ。それらがすべてブロブをサポートするかどうかは100%確信していませんが、最悪のシナリオはASCII表現を使用してテキストフィールドに入れることができます。

トリックは、関数を使用することです serialize()

> x <- rnorm(100)
> y <- 5*x+4+rnorm(100,0,0.3)
> tt <- lm(y~x)
> obj <- serialize(tt,NULL,ascii=T)

これで、データベースにOBJを保存または取得できます。実際、ASCII(またはバイナリ)コードのベクトルにすぎません。 ASCII = Fはバイナリ表現を提供します。それを取得した後、あなたは次のことを使用します:

> unserialize(obj)
Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
      4.033        4.992  

編集:PMMLに関しては、aがあります pmml クランにパッケージ。多分それはあなたをどこかに連れて行きますか?

他のヒント

rはシリアル化して脱介入できます どれか オブジェクト、それが私の方法です ダイジェスト パッケージは、シリアル化されたオブジェクト上でハッシュ関数を実行することにより、いわゆる「ハッシュダイジェスト」を作成します。

したがって、シリアル化されたオブジェクトができたら( character)、保管してください。 NOSQLキー/バリューストアと同様に、リレーショナルデータベースはこれをサポートします。また、いずれかのバックエンドでは、「ハッシュダイジェスト」をキーとして使用したり、他のメタ情報を使用したりすることもできます。

たとえば、他の選択肢はあります rprotobuf また、非常に効率的にシリアル化してシリアル化することもできます(ただし、.Protoファイルを最初に記述する必要があります)。

.RDATAファイルには多くのRオブジェクトが含まれる可能性があるため、それに対処する方法を決定する必要があることに注意してください。 .rdataファイルを添付すると、POS引数を使用してLS()を使用してオブジェクトを取得できます。

> attach("three.RData")
> ls(pos=2)
[1] "x" "y" "z"

その後、それらの上にループし、位置から名前でそれらを取得し、それらをリストにシリアル化できます(Pは私のリストインデックスです)

> s=list()
> p=1
>  for(obn in obnames){
+ s[[p]] = serialize(get(obn,pos=2),NULL,ascii=TRUE)
+ p=p+1
+ }

これで、Sの要素をDBに噴出する必要があります。おそらく、名前の表(何らかのCHAR)と値(シリアル化されたデータ、BLOBまたはVARCHARが推測する)に照会する必要があります。

他の人が述べたように、はい、モデルからの出力をデータベースにテキストとして保存できます。しかし、私はそれがあなたにとって非常に便利であると確信していません。

後日、これらのモデルを再作成できるようにする場合は、出力ではなくモデルを作成した入力データセットとコードを保存する必要があります。

もちろん、モデルの出力も保存できます。その場合、データベースでその形式について考える必要があります。特定のモデル結果を見つけてフィルタリングまたは注文できる場合は、構造(および一部のメタデータ)を持つデータベースに追加すると、はるかに簡単になります。

たとえば、重要な性別反応があったすべてのモデルを取得することをお勧めします。その場合、ASCIIのチャンクを検索する必要があるのではなく、データベース内の個別のフィールドとしてその情報を追加する必要があります。モデル作成者や作成日などの他の情報を追加すると、後で役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top