R日記の作り方 Sweaveを使う

  • 20091222の日記にコメントをいただきました(こちら)。Sweaveを使ったRの記録作りのことです。
  • Rを立ち上げます(WindowsXPで使っています)
  • 「今日の作業」をします
    • 作業ディレクトリが"C:\Documents and Settings\MyName\My Documents\RDiary\rd20100106"とします。
    • Rのツールバー「ファイル」から、「ディレクトリの変更」を選んで、このディレクトリを指定します。
    • 今日、R作業で使う入力ファイルなどは、みなここに納めることにします。
    • たとえば、ここに"rand.txt"というファイルがあるとします。これを読み込んでソートしてプロットするのが今日の作業とします。
    • コマンドは以下の通りです。
data<-read.table("rand.txt")
sort(data$V1)
plot(sort(data$V1))
q()
    • 作業スペースの保存をするかどうかを尋ねてくるので、「はい」を選んで、終了です。
  • 「日記化の作業」をします
    • "C:\Documents and Settings\MyName\My Documents\RDiary\rd20100106"以下に、".Rdata"ファイルと".Rhistory"ファイルが出来上がります。
    • ".Rhistory"のファイルをテキストエディタで開きます。
    • 以前のコマンド履歴などが前半に乗っているかもしれませんが、「今日の作業」は末尾にあります。その部分の"q()"以外をコピーします
    • それを、RのSweave関数用のファイルのヘッダとフッタの間にペーストします。
\documentclass{article}

\usepackage{ascmac}

\begin{document}

<<fig=TRUE>>=

###############
#ここがRコマンド用のスペース
###############


@

\end{document}
    • "rd20100106.Rnw"とでも言う名前のテキストファイルで保存しましょう".Rnw"は「Rのnowebファイル」という意味(らしい)です。
    • "rd20100106.Rnw"はこんな感じです
\documentclass{article}

\usepackage{ascmac}

\begin{document}

<<fig=TRUE>>=
data<-read.table("rand.txt")
sort(data$V1)
plot(sort(data$V1))
@

\end{document}
    • もう一度、Rを立ち上げます。
    • 次のようなコマンドを打ちます。
Sweave("rd20100106.Rnw")
    • すると、次のようなメッセージが現われます
Writing to file rd20100106.tex
Processing code chunks ...
 1 : echo term verbatim eps pdf

 'rd20100106.tex' に対して LaTeX を実行できます 
    • 作業ディレクトリに"rd20100106.tex"というファイルが出来ていて、さらに、プロットした図がepsとpdfで出来ています。
    • texファイルはこんな中味です。
\documentclass{article}

\usepackage{ascmac}

\usepackage{Sweave}
\begin{document}


\begin{Schunk}
\begin{Sinput}
> data <- read.table("rand.txt")
> sort(data$V1)
\end{Sinput}
\begin{Soutput}
 [1] 0.002693342 0.012488929 0.041386788 0.241740035 0.246591925 0.256697358
 [7] 0.281551616 0.325136101 0.364985520 0.365066691 0.387413637 0.424479478
[13] 0.479367090 0.491357962 0.646474201 0.694218310 0.744544563 0.793634612
[19] 0.833630678 0.873841437
\end{Soutput}
\begin{Sinput}
> plot(sort(data$V1))
\end{Sinput}
\end{Schunk}
\includegraphics{rd20100106-001}


\end{document}
    • てふの動く環境でしょうか?だったら、このtexファイルをてふエディタなどで開いて、dviファイルにしたり、全体でpdfファイルにしたりしましょう。
    • ただし、少なくとも、2つの.styファイルが必要なようです。"Sweave.sty"と"ae.sty"です。
    • 利用中のてふ環境のsty置き場(私の場合はここ。。。"C:\tex\share\texmf\ptex\platex\base")か、ローカルディレクトリに置くとして。
    • 「今日の入力ファイル」とその「コマンドと図など」を取りまとめた諸ファイル一式が出来上がりました。出来たpdfは掲載図のようなもの
    • さらに、次のようなコマンドを発行すると
Stangle("rd20100106.Rnw")
    • 次のようなメッセージが出て、コマンド部分だけが、"rd20100106.R"というファイルに書き出されます。
Writing to file rd20100106.R 
    • "rd20100106.R"の中味は次の通り
###################################################
### chunk number 1: 
###################################################
data<-read.table("rand.txt")
sort(data$V1)
plot(sort(data$V1))
  • Rのコマンド以外を入れたいとき
    • 日記がRコマンドだけで済むわけもないので、それ以外のコメントを入れましょう。
\documentclass{article}

\usepackage{ascmac}

\begin{document}
ここにコメント


<<fig=TRUE>>=
data<-read.table("rand.txt")
sort(data$V1)
plot(sort(data$V1))
@

ここにもコメント
<<fig=TRUE>>=
data<-read.table("rand.txt")
sort(data$V1)
plot(sort(data$V1))
@

ここにもコメント
\end{document}