2010-12-06 6 views
2

RファイルとRnwファイルを別々にしておき、最初のSweaveチャンクにload("file.R")というRデータ/プロットをロードします。すべてのコードを実行せずにソースRファイルを付録に印刷する方法はありますか? (すなわち、コードは遅く、私はecho=TRUEチャンク内のsource()にしたくありません)。Sweaveを使用してソースファイルを添付ファイルに出力する

ありがとうございます!


アップデート - 実際に、私は私のsource()アイデア作品とは思いません。

+1

RスクリプトファイルをRnwファイルに出力するだけでいいですか? – aL3xa

+0

@ aL3xa - うん、それはおそらくそれを言う良い方法です! :)。しかし、私は最後にそれを入れたい。私がSweavingを始めたとき、最初のチャンクにすべての計算を入れた後、それをすべてエコーすることができましたが、私は(1)それが最後に行くこと、(2)各コンパイルで実行する必要はない私が組版作業をしているとき。私はさまざまな設定のチャンクで 'print(" file.R ")'を試しましたが、それもうまくいきませんでした。 –

+1

その場合、R/Sweave機能は必要ありません。しかも、@newuserは既にそれを手に入れました! =) – aL3xa

答えて

5

ラテックスパッケージの使用はいかがですか?
はあなたのヘッダーに追加
\ USEPACKAGE {fancyvrb}
その後
あなたはきれいにフォーマット出力にhighlightパッケージを使用することができます

+1

@newuser - ポインタありがとう、私は間違ったパスにあった。私はリスティングパッケージがもっとうまくいくことを発見しました(私は行の折り返しが必要で、fancyvrbでそれを行う方法を理解できませんでした。後世のために、ここで私が使っているものです: '\ usepackage {listings} \ usepackage {courier } \ lstset {breaklines = true、basicstyle = \ ttfamily} '。ありがとう! –

3

VerbatimInput {yourRfile.R}、カラフルなコード\:

highlight("myRfile.R", renderer = renderer_latex(document = F)) 

しかし、あなたのラテックス文書にあなたがdocument = Tで得る長いプリアンブルを入れるのを忘れないでください。

あなたが直接コードを試すことができます。

\begin{appendix} 

\section{Appendix A} 

\subsection{R session information} 

<<SessionInforamtaion,echo=F,eval=T,results=tex>>= 

toLatex(sessionInfo()) 

@ 


\subsection{The simulation's source code} 

<<SourceCode,echo=F,eval=T>>= 

Stangle(file.path("Projectpath","RnwFile.Rnw")) 

SourceCode <- readLines(file.path("Projectpath","Codefile.R")) 

writeLines(SourceCode) 

@ 
\end{appendix} 

これを使用して、あなたが考える必要があります:

highlight(output="test.tex", 
      parser.output = parser(text = deparse(lm)), 
      renderer = renderer_latex(document = T)) 

とgetは

alt text

2

私は通常によってこの問題を解決1行あたりの最大文字数。

2

RとRnwファイルを分離することは、読み書きプログラミングの目的に反します。私のアプローチは、テキスト内の適切な場所にコードチャンクを含めることです。私の観客は、コードに興味がない場合、私は

、私はその場しのぎのビットですと認める
<<appendix-foo, eval=FALSE>>= 
<<foo>> 
@ 

として付録にコードを組み立てるかもしれません

<<foo, echo=FALSE>>= 
x <- 1:10 
@ 

としてそれをマークするかもしれませんエラーが発生しやすい(忘れられたチャンク)。すぐに、サポート資料(データセット、有用なヘルパー関数、非Rスクリプト)を含む文書をRパッケージにバンドルしたいが、これは作成するのが難しくない。パッケージをビルドすると、自動的にpdfとStangle'dのRファイルが作成されます。これはまさにあなたが望むものです。パッケージ構築は遅いプロセスですが、パッケージをインストールする際には、ビネットを再構築する必要がないため、パッケージを提供するすべての人にとって迅速かつ便利です。

書式設定/テキストでつぶやく場合は、グローバルオプション\SweaveOpts{eval=FALSE}を使用します。

+0

+1!それはすばらしいトリックだ!しかし、実行に時間がかかる長時間の計算(1000行以上のコード) )、計算とタイプ設定を1つのファイルに結合する必要があると思いますか?キャッシュウェイヴのようなツールがありますが、後で私がタイプセットを微調整する必要がある場合はソーシングするか、OPの場合はコード全体を追加したいので簡単に行うことができます。 –

+0

また、コードは一般的に数ヶ月のtyp typingより前です。多くの改善を使用できるプロセス:)。 –

+0

私にとっては、1000行のコードは、パッケージ内で「人」ページとして文書化され、機能を保証するために単体テストで書かれた一口サイズの関数として終わるでしょう。そして、はい、分析(関数への一連の呼び出し)は、処理に長い時間がかかったSweaveビネットになります。途中でトリックを使用してオブジェクトをキャッシュすることもできますが、最終バージョンは実際のコードと緊密に結合されています。もっと「文法的」なアプローチは、Sweave/no-webとして機能を提示するでしょう。最近の例はR [compiler](http://svn.r-project.org/R/trunk/src/library/compiler/)ですが、これは真のウィザードの作業です。 –

関連する問題