「RからCを呼ぶ」という記事を本館の方に書いています.
Rはなにかアイデアとか思いついたことをすぐに試すにはよいし、とても使いやすいのですが、さすがにインタープリターだけあって、C言語なんかに比べるととても遅いのです.そんなときは時間のかかる部分をCとかで書いてRからそれを呼び出すということができます.
ずっと整理したいと思っていたのになかなかできなかったのを、なんとかがんばっています(笑
「RからCを呼ぶ」という記事を本館の方に書いています.
Rはなにかアイデアとか思いついたことをすぐに試すにはよいし、とても使いやすいのですが、さすがにインタープリターだけあって、C言語なんかに比べるととても遅いのです.そんなときは時間のかかる部分をCとかで書いてRからそれを呼び出すということができます.
ずっと整理したいと思っていたのになかなかできなかったのを、なんとかがんばっています(笑
このエントリーのトラックバックURL:
http://blogs.topaz.ne.jp/mt/MT-3.37-ja/mt-tb.cgi/93
コメント (2)
Rwikiの方からやって来ました。1000×1000以上の行列を扱うため、これまでRでやっていた乱数発生のループやコレスキー分解などをRからCを呼び出してやろうと思っています。その際、行列をRからCに受け渡す場合(逆も)は、変数をどのように宣言すれば良いのでしょうか? また、Rから直接呼び出すCファイルがその他自前のCファイル(Hファイル)を参照する場合、Cファイル間の関係は通常のCのルールで大丈夫なのでしょうか? お忙しいとは思いますがご協力よろしくお願いします。
投稿者: まなつ | 2011年06月15日 20:22
日時: 2011年06月15日 20:22
管理人です.コメントありがとうございます.
RからRのオブジェクト(ご質問のケースでは1000×1000以上のマトリックス、おそらくdouble)を引数としてCを呼び出すには、2通りの方法があります.
「.C()」関数と「.Call()」関数です.
この件についてはRからCを呼ぶ(Linux編)に、平易に書いたつもりなので、こちらをご参照いただけますか.(それともこちらはもう既に読まれたのでしょうか・・・)
また今回の具体的なケースがわからないので、一般的なということでお答えすると、自前のCファイル等の関係は通常のCのルールで良いかと思います.
これでも、わからないということであれば再度ご質問くださればわかる範囲でお答えします.
それにしても、今年は暑い夏になりそうですね.
投稿者: みゅ | 2011年06月16日 07:33
日時: 2011年06月16日 07:33