在Rmarkdown中使用apsrtable的多个lm()模型表

时间:2017-05-31 07:45:08

标签: r latex r-markdown lm sweave

目标

使用lm()函数在一个格式良好的表中一起显示多个模型的结果。该表将在.Rmd文件中生成并输出到PDF文档。

提议的解决方案

使用R和RStudio的可重复研究中,有一个示例使用apsrtable()函数并排显示多个模型。本书提供以下代码(第173-174页):

代码

\begin{table}
    \caption{Example Nested Estimates Table with \emph{aprstable}}
    \label{BasicApsrTableExample}
        \begin{center}
<<results= asis , echo=FALSE>>=
# Load apsrtable package
library(apsrtable)
# Create nested regression model table
apsrtable(M1, M2, M3, M4, M5, Sweave = TRUE,
      stars = "default")
@
       \end{center}
\end{table}

使用M1 ... M5以块的形式创建模型M2 <- lm(Examination ~ Education + Agriculture, data = swiss)

输出

如下书所示,下面是结果的屏幕抓​​取。这正是我想在.Rmd文件中创建并输出到PDF文档的表。

enter image description here

问题

尝试1 当我尝试使用里面的代码块 - 如下所示 - 并输出到PDF时,我收到一条错误消息:Error: $ operator is invalid for atomic vectors

```{r}
t.model2 = xtable(model2,label = NULL)
t.model3 = xtable(model3,label = NULL)

library(apsrtable)

apsrtable(t.model2, t.model3, Sweave = TRUE, stars = "default")
```

尝试2 当我使用上面的代码之外的代码块时,.Rmd文件输出到PDF,但显示以下内容:

enter image description here

问题

我的问题

  • 为什么这些尝试都失败了?
  • 使用的正确方法是什么? {。1}}功能在.Rmd?
  • 此方法是否可以将此.Rmd文件输出为PDF?

相关的Stack Overflow问题

1 个答案:

答案 0 :(得分:0)

您需要注意以下两件事:

  • 块选项results='asis'
  • \usepackage{dcolumn}必须位于帮助文件中所述的序言中。

另一个选择是stargazer软件包,它不仅可以编织为PDF,还可以编织为HTML(请参见屏幕截图)。

---
title: "stargazer"
author: "hplieninger"
date: "3 August 2018"
output: pdf_document
header-includes:
    - \usepackage{dcolumn}
---

```{r}
m1 <- lm(Fertility ~ Education , data = swiss)
m2 <- lm(Fertility ~ Education + Agriculture, data = swiss)
m3 <- lm(Fertility ~ . , data = swiss)
```

```{r, results='asis'}
apsrtable::apsrtable(m1, m2, m3, Sweave = TRUE)
```

```{r, results='asis'}
# If output: pdf_document
stargazer::stargazer(m1, m2, m3)
# If output: html_document
# stargazer::stargazer(m1, m2, m3, type = "html")
```

multiple lm() regression models using stargazer in Rmarkdown