2016-08-29 3 views
0

Я использую texreg для создания таблицы LaTeX из R. Я хотел бы вставить пустой столбец в вывод (по стилистическим причинам). Конечно, я могу сделать это вручную, но было бы здорово создать это автоматически. Вот пример:texreg - создать пустую колонку

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} 

Было бы, конечно, будет еще лучше, если был способ вставить произвольные пустые столбцы.

+0

'' texreg'' был создан для объектов '' lm'' и будет принимать их только. Как уже упоминалось [в этом сообщении] (http://stackoverflow.com/questions/21955145/create-a-new-lm-object-using-r), вы можете просто создать свои индивидуальные объекты lm, взяв уже существующий объект lm и манипулировать его числами персонажами. возможно, 'textreg' примет это. '' emptyLM <- reg1; emptyLM $ rates [1: 2] <- as.character (rep ("", 2)) '' и так далее. Затем вызовите '' texreg (list (reg1, reg2, emptyLM, reg3) ''. Удачи! – nilsole

+0

Последней возможностью, конечно, было бы манипулирование самой функцией '' textreg'' в соответствии с вашими потребностями. – nilsole

+1

@nilsole: This неверно. '' texreg'' был создан для всех типов моделей. В настоящее время он поддерживает более 70 из них и настраивается. Настраиваемые средства позволяют легко создавать новые расширения, предоставляя методы для общей функции '' extract'' как описанный в моем ответе здесь: http://stackoverflow.com/questions/38894044/print-beautiful-tables-for-h2o-models-in-r. Форсирование коэффициентов в контейнеры '' lm'' или изменение '' texreg' 'функция - это абсолютно неправильный способ сделать это. –

ответ

1

Вы можете вставить новые столбцы, используя аргумент custom.columnstexreg. Новые столбцы должны быть переданы как именованный список. Аргумент custom.col.pos может использоваться для указания места расположения столбцов. Например, вы можете вставить новый пустой столбец, добавив аргумент custom.columns = list("new column" = rep("", 3)).

Смежные вопросы