knitrパッケージのkable関数を使えば、matrixやdata.frameなどの表形式をきれいに出力してくれるが、ftable関数を用いた多重クロス集計の結果は、kable関数を使うことができない。
これは非常に残念なので、他の方法できれいに出力する方法をお伝えする。ちなみにこの方法ではPDF出力のみの対応となるので注意してほしい。
手順を簡単に説明すると、多重クロス集計の部分だけをTexに変換して直接出力するというやり方となる。
まず準備として、ftable関数の結果をTexに変換するための関数をもつパッケージsimsalaparをインストールする。
> install.packages('simsalapar')
実際のコードの書き方は、以下のコードを見ていただければお分かりになるだろう。
simsalaparパッケージのtoLatex関数でTex形式に変換している。
注意点としては、まず、最初のheader-includesでbooktabsを呼び出して置かなければならない。これは、toLatex関数で変換された表に罫線topruleなどが含まれるからである。
次に、チャンク内の「result=’asis’」である。これは、このチャンク内で囲まれた部分の出力をそのまま渡すことを指定している。
---
title: "Sample"
header-includes:
- \usepackage{booktabs}
output:
pdf_document:
latex_engine: xelatex
---
```{r}
ft <- ftable(Titanic, row.vars = c(1, 2))
ft
```
```{r, results='asis'}
library(simsalapar)
toLatex(ft)
```
R knitrできれいな多重クロス集計をPDFで出力する方法