私はできる限りこの質問に答えようとします。
...しかし、あなたが尋ねていない質問はおそらくもっと関連性があります:RアルゴリズムをRでより速くすることができますか?ここでの答えは通常「はい」です。それは「十分に速い」ことができますか?まあ、それは試してみなければ(そして現在のRコードを見ずに)答えることは不可能です。
Q:私のRアルゴリズムはCでより速くなりますか?
A:はい!アルゴリズムに「最適な」Cコードを記述した場合、おそらくより高速になります。そうすることは、おそらくもっと多くの仕事になるでしょう。
Q:Cでは、大きなベクトルの並べ替えをより高速に実行できますか?
A:はい。マルチスレッドを使用すると、速度を大幅に向上させることができます。...しかしsort(x, method='quick')
、Rを呼び出すことから始めて、それが状況を改善するかどうかを確認してください!デフォルトの方法は、ランダムデータに対してはそれほど高速ではありません。
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でもそれらの一部を使用できます!)。
BLASの詳細
もう1つの方法は、RからCに.Callを作成することです。そこから、Rのすべての機能にアクセスできます。inline
パッケージとRcpp
パッケージはそれを簡単にするのに役立ちます。
3番目の方法は、アプリケーションにRを埋め込むことです。Rinside
それを簡単にするのに役立ちます。
Q:CSVデータをCに読み込むにはどうすればよいですか?
A:fopen
とfscanf
関数を見てください。...そしてそれらを使用してデータインポート関数を記述します。