R と LaTeX の連係.
#contents

LaTeX そのものの話題は各人で検索して下さい。お薦めは[[TeX Wiki:http://oku.edu.mie-u.ac.jp/~okumura/texwiki/]]。
*概要 [#description]

R と関係のある LaTeX の Tips を記載してください。
R と LaTeX の連係

#contents
LaTeX そのものの話題は各人で検索して下さい。R と関係のある LaTeX の Tips を記載してください。

//------------------------------------------------------------

* RからLaTeXの表を出力する [#faf014f9]

RからLaTeXの表を出力するには、xtableパッケージのxtable()を使う方法とHmiscのlatex()がある。xtable()は単純な機能しか提供しないが、その分使いやすい。latex()は非常に高機能であるため、効率的にLaTeXの表を作成できる。

latex()は、通常のtabluar以外にも、booktabsやctableに対応している。もし、論文用の表を作成したいのなら、booktabsかctableのどちらかを使うべきだろう。ctableの方が高機能だがドライバ依存なのでちょっと扱いが面倒。latex()を使うにはHmiscをインストールする。

** latex 関数の場合 [#r485b8cf]
*** booktabs形式での出力 [#tfd76fc0]

 > latex(オブジェクト, file='',booktabs=T,dcolumn=T)

file=''とすると、画面に出力される。

*** ctable形式での出力 [#r34bea38]

*** 用意するもの [#jea4551a]
Hmiscパッケージ、[[ctable.sty:http://www.ring.gr.jp/pub/text/CTAN/macros/latex/contrib/ctable/]]、[[dcolumn.sty:http://www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/tools/dcolumn.sty?view=log&pathrev=2039]]~
styファイルをカレントディレクトリに置けばそのまま使えるが、今後いつでも使えるようにするためには、styファイルは適当なところに置き、mktexlsrなどを実行して登録しておく。
*** コマンドの実行 [#hccee882]
 > latex(オブジェクト, file='ファイル名.tex',ctable=T,dcolumn=T)
ctableは学術風の表にするため、dcolumnは小数点をそろえるため。
*** LaTeXソースの中に取り込む [#k06c0a55]
 ?documentclass{jsarticle}
 ?usepackage[xdvi]{color}
 ?usepackage{ctable,dcolumn}
 ?begin{document}
 ?input{ファイル名.tex}
 ?end{document}

上記のように論文中に?inputを使って取り込めばよい。

*** 実行結果の例 [#vde08f51]
#ref(latex-table.png)
latex()は非常に多機能なので、是非ヘルプファイルを読まれたい。

//------------------------------------------------------------
** xtable 関数の場合 [#z864988a]
"xtable" パッケージを利用すると、データを「LaTeXのtabular環境でのコード」
あるいは「htmlの表のコード」を出力します。

*** ライブラリの使用宣言 [#r7e7e456]

 > library(xtable)

*** どのような関数の結果に対応しているか [#w14d6091]

 > methods(xtable) # 以下のような関数に対応
  [1] xtable.anova           xtable.aov            
  [3] xtable.aovlist         xtable.coxph          
  [5] xtable.data.frame      xtable.glm            
  [7] xtable.lm              xtable.matrix         
  [9] xtable.prcomp          xtable.summary.aov    
 [11] xtable.summary.aovlist xtable.summary.glm    
 [13] xtable.summary.lm      xtable.summary.prcomp 
 [15] xtable.ts             

*** 使用例 [#u3d70637]

何もオプションを指定しないとコンソールに結果が示される。これをコピーペースとしても良いが,ちゃんとオプションを指定して,ファイルに出すのが普通。

 > xtable(prcomp(matrix(rnorm(100),20,5))) # prcomp の結果を LaTeX に取込む例
 % latex table generated in R 2.1.1 by xtable 1.2-5 package
 % Thu Aug  4 22:17:08 2005
 ?begin{table}[ht]
 ?begin{center}
 ?begin{tabular}{rrrrrr}
 ?hline
  & PC1 & PC2 & PC3 & PC4 & PC5 ??
 ?hline
 1 & $-$0.0244 & $-$0.1054 & $-$0.9110 & $-$0.3256 & $-$0.2286 ??
 2 & $-$0.3081 & $-$0.2500 & 0.3311 & $-$0.2465 & $-$0.8199 ??
 3 & 0.0399 & 0.9111 & 0.0660 & $-$0.3748 & $-$0.1535 ??
 4 & $-$0.6196 & $-$0.1368 & 0.1157 & $-$0.5813 & 0.4961 ??
 5 & $-$0.7204 & 0.2786 & $-$0.2065 & 0.5957 & $-$0.0767 ??
 ?hline
 ?end{tabular}
 ?end{center}
 ?end{table}
タイプセットの結果は,以下の通り
#ref(xtable.png)

* RのソースコードをLaTeX文書に記述する [#b7ceaf32]

** listings.styを使う [#jf70ea48]

Rソースファイルを構文強調して表示することができます。~
「[[RのソースコードをLaTeX文書に記述する]]」を参照。

** verbatim 環境を使う [#yf0f5ffd]

キーワードのカラーリングなど派手だが,色数を使えばいいと言うものでもないので,奥村氏が推奨の ?begin{verbatim}〜?end{verbatim} を使うのが控えめでよいという向きはこちらを。~
実行例(以下はテキストのように見えるが,画像ファイル)
----
#ref(prog.png)
----

** cprog.styを使う [#la7e81c5]

 ?documentclass{article}
 ?usepackage{cprog}
 ?begin{document}
 ?begin{cprog}
 boa.acf <- function(link, lags)
 # Brian Smith has produced the BOA (Bayesian Output Analysis) suite of
 # S-plus/R functions for analysis of MCMC output, which reads in output
 # from Classic BUGS or WinBUGS. Version 0.5.0 is now available.
 {
   pnames <- boa.pnames(link)
   result <- matrix(NA, nrow = ncol(link), ncol = length(lags),
                    dimnames = list(pnames, paste("Lag", lags)))
   lags <- lags[lags <= (nrow(link) - 1)]
   n.lags <- length(lags)
   if(n.lags > 0) {
      idx <- 1:n.lags
      lag.max <- max(lags)
      for(i in pnames) {
         result[i, idx] <- acf(link[, i], lag.max = lag.max,
                               plot = FALSE)$acf[lags + 1]
      }
   }
 
   return(result)
 }
 ?end{cprog}
 ?end{document}

実行例(以下はテキストのように見えるが,画像ファイル)
----
#ref(cprog.png)
----

//------------------------------------------------------------

* LaTeX で利用するグラフィックファイルの作成方法 [#i1a0e200]

** 図をEPS ファイルに書き出す [#xdff39bf]

  > dev.copy2eps( file = "file_name.eps" )

[[Rによるポストスクリプト画像のLaTeXでの利用]] も参照.


** 図をPDFファイルに書き出す [#p09598b6]

pdflatex+pdfscreenなどでは epsは使えない。代わりにpdfを作成する必要がある。

  > dev.copy(pdf,file="file_name.pdf")
  > dev.off()

または

  > pdf()
  > plot(x)
  > dev.off()

LaTeX ソースは以下のような感じ。bb= の次の4つの数字は,最初の二つが実際に描かれる画像のファイル上での左下座標,次の二つが右上座標。これを調整すれば,元の画像そのままで実際に描かれる領域を操作できる。width= の次は実際に描かれる画像の横幅。不用意に縦座標を指定してしまうとアスペクト比が狂うので片方だけ与えればよい。当然,figure 環境で囲んでフロートにするなり自由に。

 ?documentclass[a4paper] {jsarticle}
 ?usepackage[dvipdfm]{graphicx}
 ?usepackage{ctable}
 ?begin{document}
 ?includegraphics[bb=2 2 363 275, clip, width=150mm]{pdf.pdf}
 ?includegraphics[bb=2 2 363 275, clip, width=80mm]{pdf.pdf}
 ?end{document}

実際の出力例~
#ref(pdf.png)

//------------------------------------------------------------
** 図をpicTeX形式に書き出す [#z207ec26]

 > dev.copy(pictex,"fig1.tex")

できあがったpicTeX形式の図(上記例ではfig1.tex)はテキストファイルなので、テキストエディタで日本語に書き換えることができます。picTeXはメモリを大量に消費するので、メモリを多く消費する他のstyファイルと一緒には使えないことがあります。(TEXMF/web2c/texmf.cnfで上限を調節して下さい)

*** 参考例 -- 2004-11-20 [#t0533e56]

まず R で 
 x <- rnorm(10)
 pictex("test.tex")
 plot(x)
 dev.off()

これで作られたファイル test.tex の最初に次を加える
 ?documentclass[a4paper]{jarticle}
 ?usepackage{pictex}
 ?begin{document}
当然最後に次を加える
 ?end{document}
次に test.tex からx,y軸ラベルに相当するところを見つけ編集、つまり
 ?put {Index}  [rB] <0.00pt,0.00pt> at 169.59 5.17
 ?put {x}  [lB] <0.00pt,0.00pt> at 9.72 154.73 
をたとえば
 ?put {インデックス}  [lB] <0.00pt,0.00pt> at 169.59 5.17
 ?put {?shortstack[r]{ス??[-7mm] ク??[-7mm] ッ??[-7mm] エ}}  [rB]
        <0.00pt,0.00pt> at 2 154.73 
に変更する。at 以下はテキストをおく位置の x,y 座標ですから、これをいじくれば見栄えの良い位置になります。?shortstack 内のテキストはさかさまにします。??[-7mm] は垂直間隔を調整するためです。さらに微妙な調整をするには pictex の命令を勉強する必要がありそうです。画像ファイルが欲しければ dvips test.dvi で ps ファイルにし、さらに Imagemagik 等の画像ソフトで最終的に欲しいフォーマットに変換する、でしょうか。特に複雑な画像はひょっとすると latex コンパイル時にトラブルが起きるかも知れません。参考画像は latex の一頁分そのままです(でっかく、見苦しくて済みません)。 x 軸マークはお遊びです、どうしたかはもう想像がつくかと思います。
#ref(test.png)

* 図中に日本語や数式を使う [#f1b26b99]

R単独でも日本語や数式は使えますが、美しい数式が必要な場合はTeXの力を借ります。[[PSfrag:http://tug.ctan.org/tex-archive/macros/latex/contrib/psfrag/]]というLaTeX用のパッケージを使います。

PSfrag を使う場合は、英文の図を日本語の図に変換するため、論文に使った図(英文)を講義(日本語)などで使い回す際に、改めて日本語の図を再作成する必要がなくとても便利です。しかし、xdvi でプレビューできませんので、注意が必要です。

//------------------------------------------------------------
* 資料 [#o7cfdafd]

- [[Statistical Tables and Plots using S and LaTeX:http://biostat.mc.vanderbilt.edu/twiki/pub/Main/StatReport/summary.pdf]]
- [[The R Book]]第19章「RとLaTeX」

//------------------------------------------------------------
* 関連 [#qc65d994]
*参考記事 [#article]

-[[TeX Wiki:http://oku.edu.mie-u.ac.jp/~okumura/texwiki/index.php?cmd=list]]

ツール Sweave を使うと、R コードと LATEX ドキュメントの一体化ができ、画像を含む解析結果を自動的に LATEX ソースファイルに取り込むことができます。論文、定型的レポート等、コードとデータを変えた場合も一発で済みます。

- [[The Sweave Homepage>http://www.statistik.lmu.de/~leisch/Sweave/]]
- [[Sweave 関連情報]]
- [[SweaveTips集]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS