首页 > 解决方案 > 如何在 RMarkdown 中引用观星者表?

问题描述

似乎不再可以在 RMarkdown 中引用 stargazer 表。

我没有成功地尝试实施 github 页面上发布的涉及此问题的解决方法https://github.com/rstudio/bookdown/issues/175

---
title: "Ref Stargazer Test"
output: 
  bookdown::html_document2: default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r results='asis'}
m1 <- lm(mpg ~ cyl + disp, mtcars)
stargazer::stargazer(m1, type = "html", label = "tab:model")
```

Table \@ref(tab:model) should show something on cars.

```{r mytab, results="asis"}
stargazer::stargazer(attitude,
type=ifelse(knitr::is_latex_output(),"latex","html"),
label=knitr::opts_current$get("label"),
title="Stargazer <3 Bookdown")
```

As Table \@ref(tab:mytab) shows, relationships may be hard work but love finds a way.

自 2021 年 7 月起,该引用不起作用(rmarkdown 2.9、bookdown 0.22、stargazer 5.2.2)。

还有另一种可行的解决方法吗?

标签: rr-markdownbookdownstargazer

解决方案


我不知道如何用stargazer. 我会注意到bookdown交叉引用是一个相当新的功能,并且stargazer已经超过 3 年没有更新,所以肯定会出现问题。

一个更现代的选择是modelsummary免责声明:我是维护者)。在我的偏见中,这个包更加灵活和健壮,但是 YMMV。

下面我粘贴了一个带有交叉引用的 Rmarkdown 文档的最小示例。有几点需要注意:

  • modelsummary自动检测输出格式,因此您只需在 Rmarkdown 文档顶部的 YAML 标头中指定 LaTeX 或 HTML。无需使用outputof 的参数modelsummary(但无论如何请查看文档!)。
  • 表标签由块的名称设置。在这里,它被称为“模型”,因此我们tab:model用作交叉引用。
  • 您的表格需要一个标题,否则交叉引用将不会始终如一地显示。
---
title: "modelsummary cross-reference test"
output: 
  bookdown::html_document2: default
---

```{r model}
library(modelsummary)

m1 <- lm(mpg ~ cyl + disp, mtcars)

modelsummary(m1, title = "A table title")
```

Table \@ref(tab:model) should show something on cars.

推荐阅读