3

私の質問は、タイトルが示唆するほど一般的ではないかもしれません。データを保存するための MySQL データベースを使用して、Mac OS X で R を実行しています。私はしばらくの間、Komodo / Sciviews-R を使用してきました。最近、自動生成されたレポートが必要になり、Sweave を調べました。StatET / Eclipse は、Sweavers の「標準」ソリューションのようです。

1) Komodo から StatET Eclipse に切り替えるのは合理的ですか? 以前に StatET を試しましたが、calltip / autosuggest と Komodo のより便利な設定がとても気に入ったので、StatET よりも Komodo を選びました。

2) Sweave ファイルを生成するための合理的なワークフローは? 通常、最初に R コードを開発してから、後でレポートを確認します。Sweave には R コードと Latex コードを同時に含む 1 つのファイルがあり、このファイルから .tex ドキュメントが作成されることを今日知りました。サンプルファイルは便利に見えますが、250行以上のRコードをファイルに入力してLatexと混同する方法を実際に想像することはできません.

そのようなドキュメントに qplot() および ggplot() ステートメントを入力するだけで、データベース接続や中間結果などの機能を何らかの形でソースにすることは可能ですか?

それとも、Latex と R コードの混在に慣れているだけなのでしょうか?

提案、ヒント、リンク、および根源に戻るための感謝の言葉…</p>

4

3 に答える 3

8

あなたはいくつかの質問をしたので、ここにいくつかの答えがあります。

StatEt/Eclipse は Sweave を行う正しい方法ですか?

必ずしもそうではありません (注: 私は StatEt/Eclipse の熱心なユーザーであり、純粋な R と Sweave/R の両方に使用し、気に入っています。Komodo / sciviews-R は使用していません)。.tex ファイルを生成する任意の R コマンド ラインから sweave コマンドを実行できるはずです。その後、任意の tex 環境から .tex ファイルを読み取り可能なもの (pdf など) に変換できます。

優れた Sweave ワークフローとは?

r スクリプトをスウィーブ レポートに変換したい場合は、通常、空のスウィーブ テンプレートから始めて、R スクリプト全体をタイトルの直後のスウィーブ R ブロックにコピー アンド ペーストします。

<<label=myEntireRScript, echo=false, include=false>> 
#Insert code here
myTable<-dataframe(...)
myPlot<-qplot(....)
@ 

それから、報告したい部分を探します。たとえば、テーブルをレポートに入れたい場合は、R ブロックを切り取って xtable ブロックを入れます。変数とプロットについても同じです。

<<label=myEntireRScript, echo=false, include=false>>=  
#Insert code here
@ 
Put any text I want before my table here, maybe with a \Sexpr{print(variable)} named variable

<<label=myTable, result=Tex>>= 
myTable<-dataframe(...)
print(xtable(mytable,...),...)
@ 
Any text I want before my figure
<label=myplot, result=figure>>= 
myPlot<-qplot(....)
print(qplot)
@ 
于 2010-07-21T19:59:39.167 に答える
7

これらの 関連する SO の投稿を参照してください。私の投稿の残りの部分は、質問 2 に関連しています。

Sweave でレポートを作成するとき、私は通常、ほとんどの R コードとレポート テキストを分けておきます。R コードの実行が速い場合は、.Rnw ファイルの先頭に次のようなものを含めることをお勧めします。

<<>>
source('/path/to/script.r')
@

一方、R コードに時間がかかる場合は、R スクリプトの最後に次のようなものを含めることがよくあります。

Sweave('/path/to/report.Rnw'); system('pdflatex report.tex')

そうすれば、すべての R コードを再度実行する必要なく、レポートをすばやく再生成できます。次に、R が Sweave ファイルで行う必要がある唯一の作業は、テーブルの印刷、グラフの作成、およびおそらくいくつかの図の抽出です。

于 2010-07-21T11:14:47.760 に答える
6

nullglob と同様に、R ファイルと Sweave ファイルを別々に保存することを好みますが、ワークスペースはファイルsave.image()ではなく一緒に保存することを好みsource()ます。これにより、各 .Rnw ファイルのコンパイルで R 計算を実行する必要がなくなります (そして、私は常に、必要以上に組版をいじることになります)。

私の一般的なワークフローは、それぞれの論文/プロジェクトを独自のフォルダーで独自の R ファイルを使用して実行することです。計算側が「完了」したら、save.image()すべてのワークスペース変数をそのまま保存します。

次に、同じディレクトリの .Rnw ファイルで、作業ディレクトリを設定し、setwd()すべての変数をload(".Rdata"). もちろん、ワークスペースに使用する名前は変更できますが、私はフォルダーごとに 1 つのワークスペースを作成し、既定の名前を保持します。ああ、R ファイルをいじる場合は、必ずワークスペース イメージを保存し、ワークスペースと .Rnw ファイルに残っているが、R ファイルの一部ではなくなっている変数に注意してください...これは、save.image()アプローチができる場所ですいくつかの頭痛を引き起こします。

私は Mac を使用しており、少しオタクなら TextMate を、本当にオタクなら emacs/ess をお勧めします。私は vim とコマンドライン R を使用していますが、ほとんどの場合、emacs/ess が最適に機能します。長い間これに取り組んでいるのであれば、R、Sweave、および LaTeX の emacs/ess を学習したことを後悔することはないと思います。

于 2010-07-21T15:23:00.830 に答える