2013-03-07 5 views
8

私はこれは原則的に十分に簡単であるR.の異なるバージョンではいくつかのコードのパフォーマンスを評価したい:Rのさまざまなバージョンのパフォーマンスを比較するためにknitrを使用するにはどうすればよいですか?

  • スタートR
  • 使用system.time()それがコード
  • の一部を実行するのにかかる時間を測定します
  • R
  • リンスを終了し、今異なるバージョンで

を繰り返して、私はこれを行うためのレポートを作成するためにknitrを使用したいです。ですから、私は各チャンクで新しいセッションを開始する仕組みが必要です。

どうすればよいですか?


サンプル番号knitrデモ用のマークダウンコードがあります。このコードはggplotを使ってグラフィックをプロットしますが、各チャンクに対して新しいバージョンのRを開始する方法がわからないので、両方のバージョンが同じタイミングを返すことは明らかです。

Comparison of R performance 
======================================================== 

# Do analysis in R version 2.14 

```{r fig.width=6, fig.height=3} 
library(ggplot2) 
data(diamonds) 

system.time({ 
    p <- ggplot(diamonds, aes(carat, price/carat, colour=clarity)) + geom_point() 
    print(p) 
}) 
``` 


# Repeat same analysis in R 2.15 

```{r fig.width=6, fig.height=3} 
library(ggplot2) 
data(diamonds) 

system.time({ 
    p <- ggplot(diamonds, aes(carat, price/carat, colour=clarity)) + geom_point() 
    print(p) 
}) 
``` 
+2

Rセッションの開始/停止をすべて実行して、各セッションに結果をファイルに書き込ませてから、 'knitr'を使ってすべてのログファイルを読み込むことはできません結果を要約しますか?エレガントではありませんが、より正確で簡単です。 –

+1

@ AriB.Friedmanはい、おそらく。しかし、それは仕事のように聞こえる! – Andrie

+0

別のRプロセスを実行するには、 'system()'を使う必要があります... – Spacedman

答えて

6

knitrwas easyRscriptエンジンを追加、私はan R bugバック保持しました。とにかく、このエンジンはversion 1.1.5から利用可能で、バージョン1.2としてCRAN上に置かれます。

チャンクオプションengine='Rscript'engine.path='path/to/the/desired/Rscript'を指定できるようになりました。

大規模なパフォーマンス比較では、上記のコメントで提案したAri B. Friedmanの方が良い方法だと思います。比較のためのコードチャンクがたくさんある場合は、エンジンパスを入力するのは面倒です。

+0

それは素晴らしいです、ありがとう! – Andrie

関連する問題