web-dev-qa-db-ja.com

R + Sweave + LaTeXワークフローのRコードを配置する場所

私は先週、R、Sweave、LaTeXの3つの新しいツールを学びました。最初のプロジェクトで作業しているときに頭に浮かんだ質問の1つは、Rコードの大部分をどこに配置するかということです。

私がオンラインで読んだチュートリアルでは、Rコードの大部分がLaTeX.Rnwファイルに配置されていました。ただし、LaTeXファイルに大量のR計算があると気が散ります。私が非常に役立つと思うのは(もちろん)、LaTeXファイルのRコードを呼び出して、結果を埋め込むことです。

したがって、私が使用しているワークフローは、Rコードの99%を.Rファイルに配置することです。最初にそのファイルを実行し、一連の計算をオブジェクトとして保存し、終了したら.Routファイルを出力します(作業を保存するため)。次に、Sweaveを実行すると、その.Routファイルをロードします、計算の大部分がすでに完了し、SweaveRセッションにあるようになります。

次に、RへのLaTeXコールアウトは非常に単純です。「res.table」に格納されているXTableを取得するか、変数「res」に格納されている計算済みの計算結果を取得してください。

そこで、LaTexファイルに可能な限り最小限のRコードをプッシュして、目的の結果を達成します(統計結果をLaTeXの書き込みに埋め込む)。

誰かがこのアプローチの経験がありますか?このワークフローを実際にロードして活用しようとすると、さらに問題が発生するのではないかと心配しています。

2
Clayton Stanley

私はコードを締め出すことに同じこだわりを持っていますが、Sweaveに基づいて構築された knitr を使用しています。問題が.Routファイルを回避することである場合、問題が解決する可能性があります。

2
Fr.

コードを.Rmdに入れないようにするために、すべての関数を含むパッケージの作成を開始しました。

これはワークフローとは少し異なる意図である可能性がありますが、私のプロジェクトは十分に反復的であるため、コードを関数に一般化できます。プロジェクトの目標は、ドキュメントを生成するための一種のスーパーメールマージとして使用することです。大規模なリポジトリからのデータセット。

これは、非表示にしたい分厚いRコードブロックを削除するという基準を満たしていますが、処理時間の短縮にはあまり効果がありません。

私が周りで見た別の方法は、source()を使用することを提案していますが、それは私の限られた理解では、現在のプロセスを反映しているだけです。

0
DaveRGP