2016-08-08 37 views
4

我正在使用stargazer,我想爲簡單的lm對象生成LaTeX輸出。問題是我不能設置align = TRUE而不會出現錯誤。Stargazer的Rmarkdown:如果align設置爲TRUE,則LaTeX錯誤

LaTeX Error: \caption outside float.

我檢查了它,以及信息說錯了。將Stargazer輸出直接複製到Latex文檔中可以正常工作。將其複製到文檔中會產生相同的錯誤(這並不意外,但我只是想確定)。在玩了一段時間後,我發現它在中工作,如果重要星號(*)被刪除(或精確到^{***})。但是,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) 
``` 
+0

應該不是'align'是[左,右或中心]的列表(https://github.com/jgm)時,字符向量輸出變成亂碼/pandoc-types/blob/master/Text/Pandoc/Definition.hs#L165)(對於每列)? – mb21

+0

@ mb21不可以。它必須合乎邏輯。它表示它是否按小數點對齊。 – Alex

+0

對我來說,如果'align = TRUE',看起來像'pandoc'轉義由'stargazer'生成的LaTeX代碼。 –

回答

1

在Linux系統中,無論是包裝還是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 
``` 

enter image description here

的原因是(從幫助頁)

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.

我們使用suppressMessagesinvisible,以確保只有一個輸出(通過貓生產)呈現。當rmarkdown嘗試使用print而不是cat

+0

不知何故,它仍然不適合我。你能否將控制檯上的膠乳代碼複製到文檔中? – Alex

+0

您正在使用哪個R Studio版本工作? – Alex

+0

測試和工作在RStudio版本0.99.484(64位Linux),stargazer 5.2,knitr 1.13。當你嘗試我的代碼時會發生什麼?運行鍼織之前,您是否保存了.Rmd?對我來說,如果我不先保存,它會失敗。 – dww

相關問題