结合texreg,knitr,booktabs& dcolumn

时间:2014-12-13 11:32:39

标签: r latex texreg

我正在尝试使用RStudio和knitr编译LaTeX报告。我很难让软件包booktabsdcolumn与我的texreg生成的表一起使用。

作为示例,我试图在this示例中重新创建表2:。

我作为.Rnw文件的尝试如下:

\documentclass{article}

\usepackage{booktabs}
\usepackage{dcolumn}

<<setup, include=FALSE >>=
library(texreg)
 @


\begin{document}

<<analysis, include=FALSE>>=
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
m1 <- lm(weight ~ group)
m2 <- lm(weight ~ group - 1) # omitting intercept
@

<<table, results='asis'>>=
texreg(m2)
@


\end{document}

但是,生成的LaTex表(下面)既不包含booktabs水平线也不包括dcolumn对齐。如何加入它们?非常感谢您的帮助!

\begin{table}
\begin{center}
\begin{tabular}{l c }
\hline
           & Model 1 \\
\hline
groupCtl   & $5.03^{***}$ \\
           & $(0.22)$     \\
groupTrt   & $4.66^{***}$ \\
           & $(0.22)$     \\
\hline
R$^2$      & 0.98         \\
Adj. R$^2$ & 0.98         \\
Num. obs.  & 20           \\
\hline
\multicolumn{2}{l}{\scriptsize{$^{***}p<0.001$, $^{**}p<0.01$, $^*p<0.05$}}
\end{tabular}
\caption{Statistical models}
\label{table:coefficients}
\end{center}
\end{table}

2 个答案:

答案 0 :(得分:4)

试试这个:

\begin{document}

<<analysis, include=FALSE>>=
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)

group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
m1 <- lm(weight ~ group)
m2 <- lm(weight ~ group - 1) # omitting intercept
table = texreg(m2,booktabs = TRUE,dcolumn = TRUE,use.packages=FALSE)
table2=texreg(list(m1,m2),booktabs = TRUE,dcolumn = TRUE,use.packages=FALSE)

@

<<table, results='asis',echo=FALSE>>=
cat(table)
cat(table2)
@


\end{document}

答案 1 :(得分:3)

只是澄清一下:罗伯特解决方案的关键部分是论证use.packages=FALSE而不是将代码分成两个块。

原因如下:现在调用texreg()的方式使其在tex输出中包含以下内容:

\usepackage{booktabs}
\usepackage{dcolumn}

将输出保存在对象中然后使用cat()并不能解决此问题。

您无法使用\usepackage()' outside the preamble. Knitr still compiles a PDF but apparently this use of \ usepackage {}&#39;在文件正文中,即使你已经将它们加载到序言中,也会搞砸书签和书架的使用。

use.packages=FALSE中添加参数texreg() - 如果设置为FALSE,则从输出中省略use package语句。将use package语句自己写入文档的序言中,并且您将拥有带有booktabs和对齐数字的回归表。