Я использую texreg для создания таблицы LaTeX из R. Я хотел бы вставить в вывод пустой столбец (по стилистическим соображениям). Я могу, конечно, сделать это вручную, но было бы здорово иметь возможность создать это автоматически. Вот пример:
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
объектов и будет принимать только их. Как упоминалось в этом сообщении, вы можете просто создавать свои отдельные объекты lm взяв уже существующий объект lm и превратив его числа в символы. возможно,textreg
примет это.emptyLM <- reg1; emptyLM$coefficients[1:2] <- as.character(rep( "",2))
и так далее. Затем позвонитеtexreg(list(reg1,reg2,emptyLM,reg3)
. Удачи! - person nilsole   schedule 30.08.2016textreg
в соответствии с вашими потребностями. - person nilsole   schedule 30.08.2016texreg
был сделан для всех типов моделей. В настоящее время он поддерживает более 70 из них и настраивается. Настраиваемость означает, что вы можете легко писать новые расширения, предоставляя методы для общей функцииextract
, как описано в моем ответе здесь: stackoverflow.com/questions/38894044/. Принуждение коэффициентов к контейнерамlm
или изменение функцииtexreg
— абсолютно неправильный способ сделать это. - person Philip Leifeld   schedule 30.08.2016