6

我正在尝试使用 RStudio 和knitr. 我很难获得包booktabsdcolumn使用我texreg生成的表。

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

我作为 .Rnw -file 的尝试如下:

\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}
4

2 回答 2

5

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

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

\usepackage{booktabs}
\usepackage{dcolumn}

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

\usepackage()' outside the preamble. Knitr still compiles a PDF but apparently this use of即使您在序言中加载了 booktabs 和 dcolumn,您也不能在文档正文中使用\usepackage{}'。

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

于 2015-01-04T12:19:31.890 回答
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}
于 2014-12-13T12:27:42.900 回答