如何在R的Stargazer输出表格中为预测值标题行添加分隔线?
问题
在R语言中使用stargazer包汇报两个回归模型时,通过add.lines()函数在表格末尾添加了预测值区域,但希望在“Predicted Values on x Values”行下方添加一条类似“Observations”行的独立分隔线,询问可行的实现方法。
生成回归数据的代码:
x <- 1:100 y <- rnorm(100, 4*x, 5) mod1 <- lm(y ~ x) mod2 <- lm(y ~ 1) se1 <- summary(mod1)$coef[2,2] se2 <- summary(mod2)$coef[1,2] mod1.pred1 <- predict(mod1, newdata=data.frame(x=1)) mod2.pred1 <- predict(mod2, newdata=data.frame(x=1)) mod1.pred2 <- predict(mod1, newdata=data.frame(x=2)) mod2.pred2 <- predict(mod2, newdata=data.frame(x=2))
原生成表格的Stargazer代码:
stargazer(mod1, mod2, se = list(se1, se2), out="Results.html", notes="Two Models", keep.stat="n", type = "text", table.layout ="ldmc#-t-s-a=n", add.lines = list( c("Predicted Values on x Values"), c("", "", "", ""), # add empty list element c("Predict when x=1",mod1.pred1,mod2.pred1), c("Predict when x=2",mod1.pred2,mod2.pred2)), add.lines.separator = c(1) # add separator after fourth element)
解决方法
可以通过两种方式实现需求:
方式一:手动添加分隔线行
在add.lines列表中,标题行之后直接添加一行由分隔符(文本表格用---)组成的元素,模拟原生分隔线效果:
stargazer(mod1, mod2, se = list(se1, se2), out="Results.html", notes="Two Models", keep.stat="n", type = "text", table.layout ="ldmc#-t-s-a=n", add.lines = list( c("Predicted Values on x Values"), c("---", "---", "---", "---"), # 添加分隔线行 c("Predict when x=1",mod1.pred1,mod2.pred1), c("Predict when x=2",mod1.pred2,mod2.pred2)) )
方式二:利用add.lines.separator参数精准控制
add.lines.separator参数接受一个向量,每个元素对应要在第几条add.lines行后添加分隔线。将其设置为c(1),即可在标题行(第1条add.lines元素)下方自动添加分隔线,同时移除原代码中的空行元素:
stargazer(mod1, mod2, se = list(se1, se2), out="Results.html", notes="Two Models", keep.stat="n", type = "text", table.layout ="ldmc#-t-s-a=n", add.lines = list( c("Predicted Values on x Values"), c("Predict when x=1",mod1.pred1,mod2.pred1), c("Predict when x=2",mod1.pred2,mod2.pred2)), add.lines.separator = c(1) # 在第1条add.line后添加分隔线 )
注:若使用HTML输出(type="html"),分隔线会自动适配HTML表格的边框样式,无需手动修改分隔符。
内容的提问来源于stack exchange,提问作者user321627
相关产品推荐
相关产品推荐

