当我使用knitr编织到html时,没有表输出

时间:2018-07-01 04:03:55

标签: r rstudio knitr kable

我正在使用kableExtra尝试输出LaTeX表,但是当我将代码编织到html时,该表不输出。它只是输出我不想要的垃圾。下面是示例代码,输出结果也是:

```{r, echo=FALSE}
library(dplyr)
library(kableExtra)
library(knitr)

x <- seq(1,9,by = 1)

kable(x,format = 'latex', booktabs = T, caption = "A KnitR Kable")
```

html文件中的输出:

## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
```

出了什么问题?

2 个答案:

答案 0 :(得分:1)

作为kableExtra的作者,我觉得我需要在这里做一些说明。当您单独使用knitr::kable时,@ JonGrub所说的是绝对正确的。默认情况下,kable中的format = "markdown"是您的名字,您将让pandoc为您确定表格的格式。但是,如果您使用的kableExtra仅适用于LaTeX或HTML表,则这些markdown输出将不起作用。因此,过去您需要在有线通话中指定format

几个月前,我意识到人们需要生成一个可以同时在HTML和LaTeX中使用的表,尤其是随着bookdown的流行。结果,我在0.9.0中向kableExtra添加了一些东西,它将自动识别它是否用于LaTeX环境。如果这样,它将默认的kable格式设置为“ latex”。否则,您将获得一个HTML表(如果您在常规R会话中使用它,则将在RStudio中看到其预览)。这个小技巧可让您摆脱那些format="xxx"的电话。它允许您使用在HTML和LaTeX中都可以使用的同一段代码来生成自定义的表格输出。

答案 1 :(得分:0)

正如一些评论所指出的那样,这里的问题是您在使用R-markdown编织到format = 'latex'报告时正在使用html。 R-markdown在生成html时会使用markdown语言而不是Latex。

当您生成PDF时,图片看起来会有所不同,因为该过程随后会首先生成使用Latex编译的Latex文档。

要获取该块,您将因此必须选择format = 'markdown'。这将适用于html和PDF。但是,我建议您不要完全指定格式,因为rmarkdown将为您选择格式。您提到的第二个问题是显示dplyr启动消息。您可以在块选项中使用message = FALSE将其关闭。所以我建议:

```{r echo = FALSE, message = FALSE}
library(dplyr)
library(kableExtra)
library(knitr)

x <- seq(1, 9, by = 1)

kable(x, booktabs = TRUE, caption = "A KnitR Kable")
```

另一个不错的技巧是,如果您在直接使用RStudio进行编织时遇到问题,请尝试使用render()中的rmarkdown命令。它通常使错误更明确。这是语法:

rmarkdown::render("C:/path/to/file.Rmd", output_format = "all")

注意,您可以在此处指定输出文件格式。全部表示将生成标头中指定的所有输出格式。例如:

---
title: ''
output:
  pdf_document: default
  html_document: default
---

在这种情况下,上述命令将输出html和PDF文件。如果您无法输出PDF文件,则很可能您缺少乳胶安装。我第二次推荐tinytex的@Tung,但您也可以研究Miktex或Texlive。

编辑:由于@camille的评论,我意识到format = 'latex'在编织为PDF时可以很好地工作,并且在编织为html时只会表现异常。