当我使用 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 输出。
我正在使用 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 输出。