1

可能だと思いますが、rprotobuf パッケージを使用して R で基本型をマップする方法を探しています。私が望むのは、Rserve と非常によく似たネットワーク/サーバーを作成することですが、Rserve の QAP プロトコルではなく、プロトコル バッファを使用してデータをシリアル化することです。私の質問は、data.frame のようなものをプロトコル バッファにマップする方法です。これは、私がどのように見せたいかの例ですが、間違った方法で行っている場合はお知らせください.

message TextCell {
   required string name = 1;
}

message NumericCell {
   repeated int32 num 1;
}

message TextColumn {
   repeated TextCell text 1;
}

message NumericColumn {
   repeated NumericCell number 1;
}

message DataFrame {
  optional NumericColumn numbericColumn = 1;
  optional TextColumn textColumns = 2;
}

私は今これをモックアップしたので、おそらくエラーがあるでしょうが、これは私が見ている概念であり、悪い考えのように見えるダブルスのようなものは考慮されていません. バイト型を使用し、反対側の列を逆シリアル化する方が良い解決策になるでしょうか。この問題に対処する方法がまだわからないため、より知識のある人々からのフィードバックを大いに歓迎します.

ストレージ効率とより多くの言語を使用できる可能性があるため、プロトコル バッファを使用したいと考えていますが、QAP プロトコルに問題はありません。非常に高速で効率的です。

前もって感謝します

4

1 に答える 1

2

RHIPE からの R オブジェクトのキャッチオール プロトコル バッファー スキーマを RProtoBuf と新しい関数に統合し、data.framesserialize_pbなどunserialize_pbの任意の R オブジェクトをプロトコル バッファーに変換します。例えば:

msg <- tempfile();
serialize_pb(iris, msg);
obj <- unserialize_pb(msg);
identical(iris, obj);

この機能は、あなたの質問が最初に尋ねられた後に発表されたRProtoBuf 0.4で導入されました。arXiv でこれらの新機能を紹介する JSS ペーパーのプレプリントを参照してください: RProtoBuf: Efficient Cross-Language Data Serialization in R

于 2014-02-22T06:19:06.143 に答える