我正在使用 stargazer
,我想为一个简单的 lm
对象生成 LaTeX
输出。问题是我无法设置 align = TRUE
而不出现错误。
LaTeX Error: \caption outside float.
我查了一下,消息说的是错误的。将 Stargazer 输出直接复制到 Latex 文档中效果很好。将其复制到 rmarkdown
文档中会产生相同的错误(这并不奇怪,但我只是想确定一下)。经过一番尝试后,我发现如果删除了重要性星号(*)(或者精确地说是^{***}
),它就可以在rmarkdown
中工作。但是,stargazer
默认生成它们,它们也是输出的重要组成部分。
有办法让它发挥作用吗?
---
header-includes:
- \usepackage{dcolumn}
output: pdf_document
---
## R Markdown
```{r, include = FALSE}
library(stargazer)
df <- data.frame(x = 1:10 + rnorm(100),
y = 1:10 + rnorm(100))
reg <- lm(y ~ x, data = df)
```
```{r, results='asis', echo = FALSE}
stargazer(reg, header = FALSE, align = TRUE)
```
最佳答案
在 Linux 系统上,将 stargazer 包装在 invisible
或 suppressMessages
中可以抑制渲染的垃圾。不幸的是,这个解决方案似乎不适用于 Windows 计算机。
---
header-includes:
- \usepackage{dcolumn}
output: pdf_document
---
## R Markdown
```{r, include = FALSE}
library(stargazer)
df <- data.frame(x = 1:10 + rnorm(100),
y = 1:10 + rnorm(100))
reg <- lm(y ~ x, data = df)
```
```{r, results='asis', echo = FALSE}
invisible(stargazer(reg, header = FALSE, align = TRUE))
# suppressMessages(stargazer(reg, header = FALSE, align = TRUE)) # also works
```
原因是(来自帮助页面)
stargazer uses cat() to output LaTeX/HTML code or ASCII text for the table. To allow for further processing of this output, stargazer also returns the same output invisibly as a character vector.
我们使用 suppressMessages
或 invisible
来确保仅渲染第一个输出(由 cat 生成)。当 rmarkdown 尝试使用 print
而不是 cat
关于Stargazer Rmarkdown : LaTeX Error if align is set to TRUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38836729/