Sweaveとknitr

ネットでみた記事に発奮して,やってみた。

文芸的プログラミングというやつらしい。これはどうにも訳語が悪いと思うのだが,要はレポートの中に入れる数値,表,グラフなんかをプログラミングしておこうという考え方みたいだ。そのプログラムがあれば,データセットを変えるだけで何度も同様のレポートを生産することができる。いちいち数字の変更をすることなく,だ。

 

レポートを量産する予定がなくても,Rのコードや結果を含んだレポート,論文を書く時は便利だろう。

 

しかも,R studioに機能統合されているので,特に難しいことを気にせず実行できるというのがいいじゃないか。

 

ということで,サンプルコードを書いてみました。R,R studio, TeXの環境が整っていないと駄目ですよ,念のため。

 

まずはSweave。これはTeX のコードを書いて,途中にRのコードを入れるのね。R studio  のFile>New>R Sweaveと選んでいくと,Sweave用コードを書く画面が自動的に現れる。texのプリアンブルなんかももう含まれてます。

 

そこに書いたサンプルコードはこんな感じ。

 

 

 

 

 

\documentclass{article}

\begin{document}

\SweaveOpts{concordance=TRUE}

Hellow World!

にほんごがかきたかったのに

<<>>=

data(iris)

head(iris)

library(mvpart)

library(randomForest)

@

<<>>=

result <- rpart(Species~.,data=iris,method=”class”)

@

\begin{figure}[!h]

  \begin{center}

<<fig=TRUE,width=12,height=6,echo=T>>=

plot(result)

text(result)

@

  \caption{Classfication tree of iris data}

  \label{fig:ctr}

  \end{center}

\end{figure}

\end{document}

 

 

 

 

 

で,これを「compilePDF」とするだけ。あ,ファイルはASCIIコードで保存してね。UTF-8は駄目だったなぁ。

 

f:id:kosugitti:20120710121533p:plain

なので,ご覧の通り,日本語は文字化けします。jsarticleじゃなくてarticle環境で書いているのですが,なんでかというとplatex2eコンパイラを使わせてもらえないから。コンパイラを該当するものに変えるには,さらに環境設定が必要みたい。今回は遊びなので,そこまで求めません。英語限定でも,Rソースとその結果がダイナミックに作れるのは嬉しいね。

ちなみに,パッケージSweaveがRstudioの中に入っているみたいなんだけど,R2.15.1に対応してないみたいなので,RstudioあるいはR,またはSweaveパッケージのバージョン違いには要注意です。

 

次にknitr。これは結果をhtmlで出力するのがデフォ。なぜかパッケージのインストールに手間取って,Rstudioの上からパッケージをインストールするも動かず。結局Rを直接起動して(つまりRgui.appで)install.packages(“knitr”)してからRstudioに戻ったらできた。たぶん,ライブラリパスがRとRstudioで違うんだ。後でちょっと整えておかないとな(R studioではR_LIBがどうかなってるんだろうか。よくわからん)。ともかく,Sweave同様にFile > New > R Markdownを選択。

で,やってみたのがこれ。

f:id:kosugitti:20120710121521p:plain

何もしなくても,日本語が通ります!しかも文字のサイズを変えるとか,texの数式を書くというのが簡単にできました。肝心のRコードやその結果を書くところまではいってないけど,こっちの方が簡単にできる感じかなぁ。

 

まだバージョン1にもなってないRstudioですが,色々今後が楽しみになってきました。