[]RとLaTexの連携

tex("てふ"と読む)はプログラミングで文書を作成できる高度なツールです。

Rと連携させる利点はこんな感じ。

  • 両方スクリプトで動くので、パラメータを変えて同じ処理を半自動的に行うことができる
  • Rで作ったグラフィックや表をtexで文書に埋め込むことができる
  • Rでグラフィック作成→texで文書作成の流れをバッチファイルやWSH等で組んでおけば、自動的に報告書を作成することもできる

今回は取りあえずRで作った図や表を文書に埋め込む方法です。

まずRで、texファイルのあるパスに図や表のcsvを掃き出します。

postscript("C:/tex/kenpo/sex_age.eps",family="Japan1GothicBBB",horizontal=F,
  height=4,width=4,pointsize=8)
	plot()
dev.off()

postscript関数で、epsファイルを作ります。

このときfamilyを指定すると日本語でも文字化けしません。

pointsizeで文字の大きさを調整しますが文字のバランスを調整するのが結構めんどくさいです。

heightやwidthの値をcmで指定するとtexで取り込むときの調整をしやすいのかも。

今回の場合は「C:/tex/kenpo/」にtex本体のファイルがあります。

次にtex側での受け取りです。

\begin{figure}[h]
	\centering
	\includegraphics[height=8cm,width=8cm]{sex_age.eps}
\end{figure}

これで文書に図が埋め込まれます。

tex側ではパスを指定する必要がなく、ファイル名だけで十分です。

texファイルの頭にこれを書いておかないとincludegraphicsが動かないですね。

\usepackage[dvips]{graphicx}

次に表です。

  • R側
write.csv(drug.tab2,"C:/tex/kenpo/drug_tab.csv",quote=F)

drug.tab2は表データ等を適当に加工したものです。

\begin{table}[h!]
	\centering
	\CSVtotabular{drug_tab.csv}{|c||ccc|}{%
		\hline
		 & 血圧 & 血糖 & 脂質(LDL) \\
		\hline
	}{%
		\insertbyname{} & \insertbyname{X1} & \insertbyname{X2} &
		\insertbyname{X3} \\
	}{%
		\insertbyname{} & \insertbyname{X1} & \insertbyname{X2} &
		\insertbyname{X3} \\
	\hline
	}
\end{table}

この場合、drug_tab.csvは4変数になってますね。

このCSVtotabularを使う場合は、下記のcsvtoolsをインストール(?)する必要があったと思う。

\usepackage{csvtools}

これをtexファイルの一番上に書いておく。

てか久しぶりにtexのコードを見たけど、変なコーディングだよなぁ。

もうちょっと普通のプログラム言語っぽく設計できなかったのだろうか。。。

ページTOPへ