RSRubyでRubyのArrayをRのMatrixに変換する

題名の通りです。

以前ご紹介したように、RSRubyはRubyでRのスクリプトを実行するためのものです。
RのオブジェクトをRubyのオブジェクトに変換することは簡単です。
というのはeval_Rをした結果がArrayとして扱うのが適当であればArrayに、Hashとして扱うのが適当であれば、Hashに変換してくれます。

問題はRubyのArrayをRの中で使いたいときです。

たとえば
[1, 2, 3, 4, 5]
というArrayをRの行列にしたい場合。

ruby_data = [1, 2, 3, 4, 5]
r = RSRuby::instance
r.eval_R <<-RCOMMANDS
r_data <- matrix(c(#{ruby_data.join(",")}), 1, #{ruby_data.size})
<<-RCOMMANDS

などとしてうまくjoinを使ってやればできます。