0

我正在将回归表合并到knitr. 我尝试使用texreg,但它没有用。我还可以做些什么?谢谢。例子:

\documentclass{article}

\begin{document}

<<result='asis'>>=
  library(texreg)
  reg1 <- lm(Petal.Length ~ Petal.Width, data=iris)
  reg2 <- lm(Sepal.Length ~ Sepal.Width, data=iris)
  texreg(list(reg1,reg2))
@

\end{document}
4

2 回答 2

4

您的第二次调用会lm覆盖之前的值reg

?texreg说第一个参数可以是“一个list统计模型”,所以试着列一个列表。

texreg(list(lm(Petal.Length ~ Petal.Width, data=iris), 
            lm(Sepal.Length ~ Sepal.Width, data=iris)))
于 2012-11-29T18:46:26.507 回答
2

我不确定这是否是texreg软件包的错误或功能;您可能应该与以下内容的作者交谈texreg

>   library(texreg)
Version:  1.15
Date:     2012-11-13
>   reg1 <- lm(Petal.Length ~ Petal.Width, data=iris)
>   reg2 <- lm(Sepal.Length ~ Sepal.Width, data=iris)
>   texreg(list(reg1,reg2))

\usepackage{booktabs}
\usepackage{dcolumn}

\begin{table}
\begin{center}
\begin{tabular}{l D{.}{.}{3.5} @{}D{.}{.}{3.5} @{}}
\toprule
            & \multicolumn{1}{c}{Model 1} & \multicolumn{1}{c}{Model 2} \\
\midrule
(Intercept) & 1.08^{***} & 6.53^{***} \\
            & (0.07)     & (0.48)     \\
Petal.Width & 2.23^{***} &            \\
            & (0.05)     &            \\
Sepal.Width &            & -0.22      \\
            &            & (0.16)     \\
\midrule
R$^2$       & 0.93       & 0.01       \\
Adj. R$^2$  & 0.93       & 0.01       \\
Num. obs.   & 150        & 150        \\
\bottomrule
\vspace{-2mm}\\
\multicolumn{3}{l}{\textsuperscript{***}$p<0.01$, 
  \textsuperscript{**}$p<0.05$, 
  \textsuperscript{*}$p<0.1$}
\end{tabular}
\end{center}
\caption{Statistical models}
\label{table:coefficients}
\end{table}
[1] "\n\\usepackage{booktabs}\n\\usepackage{dcolumn}\n\n\\begin{table}\n\\begin{center}\n\\begin{tabular}{l D{.}{.}{3.5} @{}D{.}{.}{3.5} @{}}\n\\toprule\n            & \\multicolumn{1}{c}{Model 1} & \\multicolumn{1}{c}{Model 2} \\\\\n\\midrule\n(Intercept) & 1.08^{***} & 6.53^{***} \\\\\n            & (0.07)     & (0.48)     \\\\\nPetal.Width & 2.23^{***} &            \\\\\n            & (0.05)     &            \\\\\nSepal.Width &            & -0.22      \\\\\n            &            & (0.16)     \\\\\n\\midrule\nR$^2$       & 0.93       & 0.01       \\\\\nAdj. R$^2$  & 0.93       & 0.01       \\\\\nNum. obs.   & 150        & 150        \\\\\n\\bottomrule\n\\vspace{-2mm}\\\\\n\\multicolumn{3}{l}{\\textsuperscript{***}$p<0.01$, \n  \\textsuperscript{**}$p<0.05$, \n  \\textsuperscript{*}$p<0.1$}\n\\end{tabular}\n\\end{center}\n\\caption{Statistical models}\n\\label{table:coefficients}\n\\end{table}\n"

问题是texreg()在控制台中打印 TeX 表并同时返回一个可见的字符向量(参见上面的最后一行),而我猜后者是不必要的,尽管您可以通过放置或分配它来invisible()修复它texreg()变量以避免打印。这是一个完整的例子:

\documentclass{article}
\usepackage{booktabs}
\usepackage{dcolumn}
\begin{document}

<<results='asis'>>=
library(texreg)
reg1 <- lm(Petal.Length ~ Petal.Width, data=iris)
reg2 <- lm(Sepal.Length ~ Sepal.Width, data=iris)
invisible(texreg(list(reg1,reg2), use.packages=FALSE))
@

\end{document}

另请注意,您需要use.packages=FALSE避免放在 LaTeX 文档\usepackage{dcolumn}\usepackage{booktabs} 中间,这没有意义(它们应该在序言中)。

于 2012-11-29T20:10:35.310 回答