Ale*_*lex 5 r pandoc knitr r-markdown stargazer
我正在使用stargazer,我想LaTeX为一个简单的lm对象生成一个输出.问题是我无法设置align = TRUE而不会收到错误.
LaTeX错误:\浮点外的标题.
我查了一下,消息说错了.将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)
```
Run Code Online (Sandbox Code Playgroud)
在 Linux 系统上,将 stargazer 包装在invisibleor内部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
```
Run Code Online (Sandbox Code Playgroud)
原因是(来自帮助页面)
stargazer 使用 cat() 输出表格的 LaTeX/HTML 代码或 ASCII 文本。为了进一步处理该输出,stargazer 还会以字符向量的形式无形地返回相同的输出。
我们使用suppressMessagesorinvisible来确保仅渲染第一个输出(由 cat 生成)。当 rmarkdown 尝试使用 渲染字符向量输出时,字符向量输出会变成垃圾print,而不是cat