我正在使用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
```
出了什么问题?
答案 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时只会表现异常。