当我想要的只是 pdf 中的一些漂亮表格时,我感觉自己已经掉进了兔子洞。说来话长,这里是:
我想从 r markdown 将一些表格打印到 PDF 中。我通常使用 Kable,效果很好。话虽这么说,这个表将有一些非常长的值,以及生成的未知数量的列,当我在 kable 中还不知道时,我很难指定哪一列的宽度。不管怎样,这让我变得灵活。
但我在编织 pdf 时遇到了麻烦。我通过其他堆栈答案了解到,flextable 需要保存为图像才能绘制为 pdf。所以我有这样的代码:
ft <- flextable(x)
ft <- autofit(ft)
tf <- tempfile(fileext = ".png")
## Not run:
if( require("webshot2") ){
save_as_image(x = ft, path = "myimage.png")
}
plot(tf)
Run Code Online (Sandbox Code Playgroud)
但一开始它给了我错误,我没有 webshot2 包,所以在遇到一些麻烦后我安装了它(它与我的 R 版本不符(我在 rstudio.cloud 上),然后当我现在尝试运行它,它说
我错过了一些明显的东西吗?如何将弹性表格另存为图像,然后将其绘制在我的 pdf 中?
我还在这里尝试了 Joanna 的解决方案:Is it possible to generated the RTable (FlexTable) in pdf with RMarkdown? r 告诉我找不到函数“as.html”。即使 flextable 和 htmltools 都已加载。
考虑到生成表格的所有代码以及我需要将其编织成 pdf 的事实,提供可重复数据的 PS 会很长,如果有人感兴趣,将提供 rstudio.cloud 链接
您现在可以生成 PDF,无需 webshot 包(flextable >= 0.6.0):
---
title: "Untitled"
output:
pdf_document:
latex_engine: xelatex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(flextable)
```
```{r}
ft <- flextable(head(airquality))
ft <- autofit(ft)
theme_vader(ft)
```
Run Code Online (Sandbox Code Playgroud)