アンダースコアが含まれる列名がある可能性があります。
results='asis'
すべての出力をそのままtexドキュメントにダンプすることを思い出してください。
たとえば、これは問題の再現可能な例です。
% test.Rnw
\documentclass[a4paper]{article}
\begin{document}
<<classRun, fig=FALSE, print=FALSE, echo=FALSE>>=
table_10_20 <- data.frame(col_1=1:10, col_2=runif(10))
@
<<results='asis', echo=F>>=
print(table_10_20)
@
\end{document}
これを実行するknitr
と、「Missinginserted $
」が表示されます。
生成される.texファイルを見ると、次のようになります。
% test.Rnw
\documentclass[a4paper]{article}
.... lots of tex ....
\begin{document}
col_1 col_2
1 1 0.69699
2 2 0.12988
3 3 0.19662
4 4 0.04299
5 5 0.08750
6 6 0.72969
7 7 0.19818
8 8 0.27855
9 9 0.81806
10 10 0.56135
\end{document}
列名col_1
とcol_2
がそのままファイルにダンプされる方法を確認してください。LaTeXでは、アンダースコアには特別な意味(添え字)があり、これは数学モードでのみ有効です。したがって、LaTeXコンパイラは$
、単語の前後に数学モードの区切り文字()を配置しようとし、エラーが発生します。
あなたの場合、あなたはあなたがあなたの出力に望むものに応じていくつかのオプションがあります。
アンダースコアを保護するために\begin{verbatim}
withを使用します。results='asis'
これにより、出力が環境にダンプされverbatim
ます。
\begin{verbatim}
<<results='asis', echo=F>>=
print(table_10_20)
@
\end{verbatim}
使用results='markup'
:これは、出力に色を付けることを除けば、逐語的な環境に似ています。デフォルトでは##
、すべての行の前にコメントマーク()が付けられます。この使用を削除するにはcomment=NA
。(この写真が上記とどのように異なるかはよくわかりません。ドキュメントの他の部分と区別するために背景が灰色である点を除いて同じです。使用する場合と同じマークアップですecho=T
)。
<<results='markup', comment=NA, echo=F>>=
print(table_10_20)
@
上記の2つは、テーブルをそのままフォントで固定して印刷するだけです。適切なラテックステーブルが必要な場合は、のようなパッケージを使用できます。これは、 (および同様の)適切でないLaTeX(またはHTML)マークアップxtable
を変換できます。data.frame
これを行うことができる他のパッケージもあると思いますが、今のところそれらは私を逃れます。ここで使用results='asis'
します。(詳細については、ドキュメントを参照してください。テーブルに印刷される内容とその方法のあらゆる側面を実際に制御できます):
<<results='asis', echo=F>>=
library(xtable)
print(xtable(table_10_20), include.rownames=FALSE)
@