私はこの問題に答えるつもりです。
...しかし、あなたの質問にはおそらくより関連性があります:RアルゴリズムはRで高速化できますか?答えは通常「はい」です。それは "十分に速く"できますか?まあ、それは試みることなく(そして現在のRコードを見て)答えることは不可能です。
Q:私のRアルゴリズムの方がCで高速でしょうか?
A:はい!アルゴリズムに「最高の」Cコードを書いた方が、おそらく早いでしょう。おそらくと多くの場合、の作業が多いでしょう。
Q:大きなベクトルの並べ替えはCで高速に行うことができますか?
A:はい。マルチスレッドを使用すると、速度をかなり向上させることができます。 ...しかし、Rでsort(x, method='quick')
と呼んで開始し、それが事を改善するかどうかを見てください!デフォルトの方法はランダムなデータではあまり高速ではありません。
x <- runif(1e7)
system.time(sort(x)) # 2.50 secs
system.time(sort(x, method='quick')) # 1.37 secs
#system.time(tommysort(x)) # 0.51 secs (4 threads)
Q:基本的なR関数を模倣するライブラリは何ですか?
A:LAPACK/BLASはRで行列演算を処理します。必要なのは、Rのバニラよりもはるかに高速なライブラリです(パフォーマンスを向上させるためにRの一部も使用できます)。 。
More info on BLAS
もう一つの方法は、RからCまで、あなたがRのすべての機能にアクセスすることができ、そこからは.callを作ることです! inline
パッケージとRcpp
パッケージを使用すると、簡単に作業を進めることができます。
第3の方法は、アプリケーションにRを埋め込むことです。 Rinside
これを簡単にするのに役立ちます。
Q:CSVデータをC言語に読み込むにはどうすればよいですか?
A:fopen
とfscanf
の機能を見てください。 ...それらを使用してデータインポート関数を記述します。
どのようなスピードアップを実現したいですか?なぜこれらの操作ではRがCよりもかなり遅くなると思いますか? http://stackoverflow.com/questions/1330944/speed-of-r-programming-languageを勉強しましたか? –
特に、 'rowSums'と' colSums'はすでにかなり高速です - おそらく膨大な量のパフォーマンスを圧縮することはできません(そして、 'Matrix'で非常に豊富なスパース行列サポートを考慮する必要がありますパッケージ、あなたの行列が疎である場合...)。 「他のユーザーのマシンを稼動させる機能」についてもう少し詳しく説明できますか? –
それは多くの仕事、特にespです。 Cプログラミングで最初から始めているからです。手作業でRコードを変換するのに要する時間よりも短い時間で、ユーザーのマシンに[R](http://cran.r-project.org/bin/windows/rw-FAQ.html)をインストールすることができます。 – hardmath