【问题标题】:Rmarkdown of Stargazer: LaTeX Error if align is set to TRUEStargazer 的 Rmarkdown:如果 align 设置为 TRUE,则 LaTeX 错误
【发布时间】:2016-12-14 16:08:46
【问题描述】:

我正在使用stargazer,我想为一个简单的lm 对象生成LaTeX 输出。问题是我无法设置align = TRUE 而不会出错。

LaTeX 错误:\caption 在浮点之外。

我检查了它,消息说的是错误的。将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)
```

【问题讨论】:

  • 不应该alignleft, right or center 的列表(对于每一列)?
  • @mb21 不,它必须是合乎逻辑的。表示是否按小数点对齐。
  • 对我来说,这看起来像 pandoc 转义了 stargazer if align=TRUE 生成的 LaTeX 代码。

标签: r knitr r-markdown pandoc stargazer


【解决方案1】:

在 linux 系统上,将 stargazer 包裹在 invisiblesuppressMessages 内可以抑制否则会被渲染的垃圾。不幸的是,这个解决方案似乎不适用于 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 使用 cat() 输出 LaTeX/HTML 代码或 ASCII 文本 桌子。为了进一步处理此输出,stargazer 还 以不可见的方式返回与字符向量相同的输出。

我们使用suppressMessagesinvisible 来确保只渲染第一个输出(由cat 生成)。当 rmarkdown 尝试使用 print 而不是 cat 呈现字符向量输出时,字符向量输出变为垃圾

【讨论】:

  • 不知何故它仍然对我不起作用。您可以将控制台中的乳胶代码复制到文档中吗?
  • 在 RStudio 版本 0.99.484(64 位 linux)、stargazer 5.2、knitr 1.13 上测试并运行。当您尝试我的代码时会发生什么?你在运行 knit 之前保存了 .Rmd 吗?对我来说,如果我不先保存就会失败。
  • 我仍然得到与以前相同的错误。我正在使用 R Studio 的 Windows 版本。不确定这是否是原因。我猜这是一个 pandoc 错误,因为代码在直接复制到 LaTeX 时可以正常工作。如果在没有包装器的情况下运行 stargazer,会出现什么错误?
  • 我有机会在 Windows 系统上玩过这个,并且可以确认我看到了和你一样的问题。我尝试使用 pdflatex 和 xetex 引擎 - 同样的问题。似乎很可能是一个 pandoc 错误。你能用linux代替吗?如果是这样,如果没有发布更好的 windows 解决方案,我上面的解决方案将满足您的需求。
  • 感谢您确认错误。但是,我不会更改操作系统,因为问题并不严重,而且我不依赖stargazer。我还找到了使用正则表达式的解决方法。当我有时间时,我会发布我为那些对如何修改stargazer 输出超出提供的函数参数感兴趣的人所做的事情。
【解决方案2】:

我遇到了同样的问题。我尝试安装最新版本的 pandoc,它解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-07
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 2019-08-30
    • 2021-01-19
    相关资源
    最近更新 更多