我正在使用 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}