Sweaveの使い方をましにする

  • RのSweaveは「てふ-like」に書いて、foo.Rnw -> (Sweave) -> foo.tex ->(latex) -> foo.dvi -> (xdvi) -> foo.pdfとする仕組み
  • これまでは以下の大きく2通り(コード実行、コード掲載のみ)をやっていた
  • コードを実行させる場合
    • 次の2通り
<<fig=FALSE>>=
x <- runif(10)
@
    • とやってコードとその実行の様子を示すか、
<<fig=TRUE>>=
plot(runif(x))
@
    • とやってコードの実行とそのプロットの図表示をさせるか
  • もしくは、コードだけを示すか
\lstdefinestyle{MyFrame}{backgroundcolor=\color{GreenYellow},frame=shadowbox}
\lstdefinestyle{MyC++Style} {language=C++,style=MyFrame,frame=none}
\lstset{
    language=R,
    basicstyle=\ttfamily,
    backgroundcolor={\color[gray]{.85}},
    keywordstyle=\color{blue}\bfseries,
}
\begin{document}
\begin{lstlisting}
x <- runif(10)
y <- runif(10)
plot(x,y)
\end{lstlisting}
\end{document}
  • コードの再利用
"<<hoge>>= xxx @""<<hoge>>"にコードが格納され、それを呼び出せる
まず"<<a>>"を作り
<<a>>=
x <- 10
@
次に"<<b>>"を作り
<<b>>=
y <- 4
x+y
@
"<<c>>"の中で"<<a>>,<<b>>"を呼び出す。
<<c>>=
<<a>>
y <- 20
<<b>>
@
    • できたPDFは以下の通り

  • 図を載せる
    • 次のような場合があるだろう
      • 図を描くコードとともに図を載せる
      • 図を描くコードを載せ、図をそれとは離してどこかに載せる
      • 図を描くコードは載せずに、図を載せる
    • 図を描くコードとともに図を載せる
<<fig=TRUE>>=
x <- runif(10)
y <- runif(10)
plot(x, y)
abline(v = mean(x))
@
    • 図を描くコードを載せ、図をそれとは離してどこかに載せる
      • 以下のように、figオプションをFALSEにすると図は出ないが、<>というコードは再利用可能な状態になっている
<<FIGkakushi,fig=FALSE>>=
x <- runif(100)
y <- runif(100)
plot(x, y)
abline(v = mean(x))
@
      • 従って、どこか他のところで、次のように、そのコードを呼び出してやり、その実施オプションとして、fig=TRUEにすれば図が現れ、echo=FALSEにしてやればコードは現れない
<<fig=TRUE,echo=FALSE>>=
<<FIGkakushi>>
@
    • 図を描くコードは載せずに、図を載せる
      • 以下のようにechoオプションをFALSEにするとコードは出ないが、figオプションがTRUEなので、図は出る
<<fig=TRUE,echo=FALSE>>=
x <- runif(10)
y <- runif(10)
plot(x, y)
abline(v = mean(x))
@