1

Ruby スクリプトが TCP/IP 経由で R と通信できるようにする rserve-client gem を使用しています。その一環として、Ruby オブジェクトをシリアル化してネットワーク経由で送信し、返された結果を Ruby に透過的に変換します。

しかし、返された配列オブジェクトには、R テーブルが Ruby に変換されたときに、これまでに見たことのない奇妙な表記法が関連付けられています。

たとえば、名前付きの id 列と 3 つの値を持つ R テーブルは次を返します。

res
=> [|WN|"id"=[1,
   2,
   3]
res.to_s
=> "[id=[1, 2, 3]]"
res.class
=> Array
res.inspect
=> "#<Array:70227288405140 [id=[1, 2, 3]]>"
res.class.ancestors == Array.ancestors
=> true
=> [[1,
  2,
  3]]

これが何か分かりますか?理想的には、IDを使用するためにハッシュに変換したいと思います...to_hashはそれを取得しません。.to_a の結果:

4

2 に答える 2

1

答えは rserve gem ソースにあります。新しいメソッドArrayで装飾されました:pretty_print

def pretty_print(q)
  q.group(1,'[|WN|',']') {
  ...
end

https://github.com/clbustos/Rserve-Ruby-client/blob/a4edabd5c742f08a9b2394ce255707219aafd7df/lib/rserve/withnames.rb#L16

于 2013-12-12T20:59:37.723 に答える