如何解决如何在 RMarkdown 中引用观星表?
似乎不能再在 RMarkdown 中引用观星表了。
我未成功尝试实施在 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)。
还有其他可行的解决方法吗?
解决方法
我不知道如何使用 stargazer
实现这一点。我会注意到,bookdown
交叉引用是一个相当新的功能,而且 stargazer
已经超过 3 年没有更新了,所以问题肯定会出现。
另一种更现代的替代方案是 the modelsummary
package(免责声明:我是维护者)。在我的偏见中,这个包更灵活和健壮,但 YMMV。
下面我粘贴了一个带有交叉引用的 Rmarkdown 文档的最小示例。需要注意的几点:
-
modelsummary
自动检测输出格式,因此您只需在 Rmarkdown 文档最顶部的 YAML 标头中指定 LaTeX 或 HTML。无需使用output
的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.
,
我自己找到了一个适用于 LaTeX 和 HTML 的解决方案。
---
title: "Ref Stargazer Test"
output:
bookdown::html_document2: default
---
Table \@ref(tab:mytable) is the referenced table.
```{r mytable,results='asis',fig.cap="This is my table."}
m1 <- lm(mpg ~ cyl + disp,mtcars)
# Use title caption from fig.cap
tit <- knitr::opts_current$get("fig.cap")
# Adding caption for html output
tit_html <- paste0('<span id="tab:',knitr::opts_current$get("label"),'">(#tab:',')</span>',tit)
stargazer::stargazer(m1,label = paste0("tab:",knitr::opts_current$get("label")),title = ifelse(knitr::is_latex_output(),tit,tit_html),type = ifelse(knitr::is_latex_output(),"latex","html"),header = F
)
```
您现在还可以使用块标题中的 fig.cap
参数来编写您希望为表格使用的标题。对于引用,您必须引用块标签(在本例中为“mytable”)。 title
中的 stargazer
参数创建 <caption>
元素,这就是将 html 标题插入其中的原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。