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

When I use knitr to knit to html, there is no table output

我正在使用 kableExtra 尝试输出 LaTeX table,但是当我将代码编入 html 时,table 没有输出。它只是输出我不想要的垃圾。示例代码如下,输出结果也是:

```{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
```

出了什么问题?

正如一些评论所指出的,这里的问题是您在使用 R-markdown 编织成 html 报告时使用了 format = 'latex'。 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 中的 knit 时遇到问题,另一个好的提示是尝试使用 rmarkdown 中的 render() 命令。它通常会使错误更加明显。这是语法:

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

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

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

在这种情况下,上述命令将输出一个 html 以及 PDF 文件。如果您不能输出 PDF 文件,很可能是您缺少 latex 安装。我第二个@Tung 推荐 tinytex,但你也可以看看 Miktex 或 Texlive。

编辑:感谢@camille 的评论,我意识到 format = 'latex' 在编成 PDF 时工作正常,只有在编成 html 时才会出现问题。

嗯,作为kableExtra的作者,我觉得我需要在这里做一些澄清。当你单独使用 knitr::kable 时,@JonGrub 说的是绝对正确的。 kable 中的 format = "markdown" 是默认格式,您将让 pandoc 为您确定 table 的格式。但是,如果您使用 kableExtra,它仅适用于 LaTeX 或 HTML table,则这些降价输出将不起作用。这就是为什么在过去,您需要在 kable 调用中指定 format

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