sweave/latex 中引用 R 对象的表格

sweave/latex 中引用 R 对象的表格

我正在使用 knitr/R-sweave 生成​​带有 LaTeX 代码的 pdf 文档。我想制作一个表格,其中包含一些由该表格上方的 R 代码块中的一些 R 计算生成的数字。当我通常想在 LaTeX/knitr-outout 中引用 R 对象时,我会使用 \Sexpr{},但它似乎在表格中不起作用。

以下是我得到的结果:

\documentclass{article}

\begin{document}
<<Chunk1>>=
a= "1%"
b= "2%"
c= "3%"
d= "4%"
e= 1
f= 2
g= 3
h= 4
@

\begin{table}[]
\centering
\caption{Simple stratified data splits}
\label{my-label}
\begin{tabular}{lll}
\textbf{Dataset} & \textbf{Observations}     & \textbf{Event rate}\\ \hline
Full data        & \Sexpr{e}                & \Sexpr{a}         \\
Training set     & \Sexpr{f}                & \Sexpr{b}         \\
Test set         & \Sexpr{g}                & \Sexpr{c}         \\
Evaluation set   & \Sexpr{h}                & \Sexpr{d}        
\end{tabular}
\end{table}

\end{document}

由于某种原因,当我仅添加前两行时:

\textbf{Dataset} & \textbf{Observations}     & \textbf{Event rate}\\ \hline
Full data        & \Sexpr{e}                & \Sexpr{a}         \\

...它运行正常。我尝试添加同一行四次,但仍然出现错误:“在 test.tex 上运行 pdflatex.exe...失败”

我从日志中得到以下信息:

LaTeX 警告:可选浮点说明符中没有位置。在输入行 71 上添加了默认值(因此使用“tbp”)。

LaTeX 字体信息:外部字体 cmex10' 已加载(字体)

<7> 位于输入行 75。LaTeX 字体信息:已加载外部 fontcmex10',大小为 (字体) <5> 位于输入行 75。[1{C:/Users/Frederik Hermann/AppData/Local/MiKTeX/2.9/pdftex/config/pdftex.map}

] (test.aux) ) 以下是您使用的 TeX 内存量: 1244 个字符串,总内存量为 493634 个 16308 个字符串字符,总内存量为 3143709 个 72572 个字的内存,总内存量为 3000000 个 4665 个多字母控制序列,总内存量为 15000+200000 个 4116 个字的字体信息(用于 16 种字体),总字体信息为 9000 个,总字体信息为 3000000 个 8191 个,总字体信息为 1025 个连字例外,总内存量为 5000i、500n、10000p、200000b、50000s 中的 27i、8n、19p、284b、237s 堆栈位置PDF 统计:1000 个 PDF 对象中有 18 个(最多 8388607 个)1000 个命名目标中有 0 个(最多 500000 个)10000 个 PDF 输出额外内存中有 1 个字(最多 10000000 个)

我还只是个新手。有什么想法吗?

答案1

您的问题源于在 RChunk 中使用“%”符号。当通过 knitr 或 sweave 编译时,“%”会传递到 LaTeX,然后被解释为注释的开头,从而导致 TeX 文件中该行的其余部分被忽略。以下是修改后的代码,后面是输出。(注意:我还关闭了输出文件中 R 代码的回显。这可以在 Windows 10 上使用 pdflatex 顺利编译。

\documentclass{article}

\begin{document}
<<Chunk1,echo=FALSE>>=
a= "1 "
b= "2 "
c= "3 "
d= "4 "
e= 1
f= 2
g= 3
h= 4
@

\begin{table}[]
\centering
\caption{Simple stratified data splits}
\label{my-label}
\begin{tabular}{lll}
\textbf{Dataset} & \textbf{Observations}     & \textbf{Event rate}\\ \hline
Full data        & \Sexpr{e}                & \Sexpr{a}         \\
Training set     & \Sexpr{f}                & \Sexpr{b}         \\
Test set         & \Sexpr{g}                & \Sexpr{c}         \\
Evaluation set   & \Sexpr{h}                & \Sexpr{d}        
\end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

答案2

有什么反对制作适当的数据框R并使用xtable图书馆想要得到漂亮的乳胶输出?下面是一个例子。当然,你需要rownames()根据自己的需要进行更改。

\documentclass{article}

<<R library>>=
library(xtable)
@


\begin{document}

<<R dataframe , results = "asis" >>=
df <- data.frame ("Observations" = c(a = "1%", b = "2%", c = "3%", d = "4%"),
                  "Event rate" = c(1:4)
)

xtable(df)
@


\end{document}

相关内容