【问题标题】:texreg - create empty columntexreg - 创建空列
【发布时间】:2016-08-30 18:57:54
【问题描述】:

我使用 texreg 从 R 创建一个 LaTeX 表。我想在输出中插入一个空列(出于文体原因)。我当然可以手动执行此操作,但能够自动创建它会很棒。这是一个例子:

library(texreg)

x1  <- rnorm(n=100,m=1,s=1)
x2  <- rnorm(n=100,m=1,s=1)
e  <- rnorm(n=100,m=0,s=1)

y <- 0.1 + 0.3 * x1 + 0.4 * x2 + e

reg1 <- lm(y~x1)
reg2 <- lm(y~x2)
reg3 <- lm(y~x1+x2)

texreg(list(reg1,reg2,reg3)
       ,stars=c(0.01,0.05,0.1)
       ,digits=2
       ,dcolumn=T
       ,use.packages=F 
       ,file="tabfile.tex")

这给了我输出:

\begin{table}
\begin{center}
\begin{tabular}{l D{.}{.}{3.5} D{.}{.}{3.5} D{.}{.}{3.5} }
\hline
 & \multicolumn{1}{c}{Model 1} & \multicolumn{1}{c}{Model 2} & \multicolumn{1}{c}{Model 3} \\
\hline
(Intercept) & 0.59^{***} & 0.53^{***} & 0.05       \\
            & (0.16)     & (0.16)     & (0.19)     \\
x1          & 0.36^{***} &            & 0.40^{***} \\
            & (0.11)     &            & (0.10)     \\
x2          &            & 0.43^{***} & 0.48^{***} \\
            &            & (0.11)     & (0.11)     \\
\hline
R$^2$       & 0.10       & 0.13       & 0.25       \\
Adj. R$^2$  & 0.09       & 0.12       & 0.23       \\
Num. obs.   & 100        & 100        & 100        \\
RMSE        & 1.05       & 1.03       & 0.96       \\
\hline
\multicolumn{4}{l}{\scriptsize{$^{***}p<0.01$, $^{**}p<0.05$, $^*p<0.1$}}
\end{tabular}
\caption{Statistical models}
\label{table:coefficients}
\end{center}
\end{table}

我想要的是:

\begin{table}
\begin{center}
\begin{tabular}{lc D{.}{.}{3.5} D{.}{.}{3.5} D{.}{.}{3.5} }
\hline
 && \multicolumn{1}{c}{Model 1} & \multicolumn{1}{c}{Model 2} & \multicolumn{1}{c}{Model 3} \\
\hline
(Intercept) && 0.59^{***} & 0.53^{***} & 0.05       \\
            && (0.16)     & (0.16)     & (0.19)     \\
x1          && 0.36^{***} &            & 0.40^{***} \\
            && (0.11)     &            & (0.10)     \\
x2          &&            & 0.43^{***} & 0.48^{***} \\
            &&            & (0.11)     & (0.11)     \\
\hline
R$^2$       && 0.10       & 0.13       & 0.25       \\
Adj. R$^2$  && 0.09       & 0.12       & 0.23       \\
Num. obs.   && 100        & 100        & 100        \\
RMSE        && 1.05       & 1.03       & 0.96       \\
\hline
\multicolumn{5}{l}{\scriptsize{$^{***}p<0.01$, $^{**}p<0.05$, $^*p<0.1$}}
\end{tabular}
\caption{Statistical models}
\label{table:coefficients}
\end{center}
\end{table}

如果有插入任意空列的方法当然会更好。

【问题讨论】:

  • texreg 是为 lm 对象制作的,并且只会接受这些。正如in this post 所提到的,您可以通过获取已经存在的 lm 对象并将其数字操作为字符来简单地创建您的个人 lm 对象。也许textreg 会接受这个。 emptyLM &lt;- reg1; emptyLM$coefficients[1:2] &lt;- as.character(rep( "",2)) 等等。然后拨打texreg(list(reg1,reg2,emptyLM,reg3)。祝你好运!
  • 最后的可能性当然是根据您的需要操纵textreg 函数本身。
  • @nilsole:这是错误的。 texreg 适用于各种模型类型。它目前支持其中的 70 多种,并且是可定制的。可定制意味着您可以通过为通用 extract 函数提供方法轻松编写新扩展,如我在此处的回答中所述:stackoverflow.com/questions/38894044/…。将系数强制放入lm 容器或更改texreg 函数绝对是错误的做法。

标签: r latex texreg


【解决方案1】:

您可以使用texregcustom.columns 参数插入新列。新列应作为命名列表移交。 custom.col.pos 参数可用于指示列的位置。例如,您可以通过添加参数custom.columns = list("new column" = rep("", 3)) 来插入一个新的空列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    相关资源
    最近更新 更多