从R手动创建Latex回归表

时间:2013-12-29 01:13:07

标签: r latex regression

我有一个回归表,我想导出到Latex。但我正在使用的对象不支持任何传统的包,如'stargazer'或'texreg'。我必须手动构建它。这是结果:

                   Estimate   Std. Error    z value
(Intercept):1 -4.652887e-01 3.149742e-01  -1.477228
x1            -3.277175e-05 1.014935e-05  -3.228952
x2            -2.446376e-05 6.717509e-06  -3.641790
x3             1.666235e+00 5.228731e-01   3.186691
x4             2.507294e-08 5.276769e-09   4.751570

我想要的是:

(Intercept)   -4.652887e-01 
              (3.149742e-01)
x1            -3.277175e-05 
              (1.014935e-05)
x2            -2.446376e-05 
              (6.717509e-06)
x3             1.666235e+00
              (5.228731e-01)
x4             2.507294e-08
              (5.276769e-09)

我可以手动完成这项工作(见下文),但我正在寻找一些更具动态性的东西,我可以在几种情况下应用。

res <- matrix(NA, nrow=2*dim(ctable), ncol=1)

res[1,] <- ctable[1,1]
res[3,] <- ctable[2,1]
res[5,] <- ctable[3,1]
res[7,] <- ctable[4,1]
res[9,] <- ctable[5,1]

res[2,] <- ctable[1,2]
res[4,] <- ctable[2,2]
res[6,] <- ctable[3,2]
res[8,] <- ctable[4,2]
res[10,] <- ctable[5,2]

谢谢!

1 个答案:

答案 0 :(得分:3)

我不知道我是否理解你的问题。但是如果你想动态创建你的表,你可以使用下面的函数。

create_table = function(table_)
{
    p_table = data.frame(Variables=NA, Values=NA)
    for(i in 1:dim(table_)[1])
    {
        est_error = table_[i,1:2] # Im assuming that you know that 2 first columns are the values that you want
        name = c(rownames(table_)[i], '') # The final table rownames
        name_values = cbind(Variables=name, Values=est_error)
        p_table = rbind(p_table, name_values)
    }
    rownames(p_table) = 1:dim(p_table)[1]
    return(na.omit(p_table))
}

您可以通过以下方式使用此功能。下面是使用mtcars数据集的一个示例。

ctable = summary(lm(mpg~. , data = mtcars))$coefficients
output_table = create_table(ctable)

输出就像你发布的那样。然后,使用xtable包很容易从R数据帧创建一个tex表。

xtable::xtable(output_table)