将 DT 表合并到 Rmd Markdown 文档中
Incorporating DT tables into Rmd Markdown document
我正在使用列表来收集一些 QC 图和 table 由函数生成的应该包含在最终 Rmd 降价 html 文档中的函数。据我所知,代码按预期工作。生成并收集所有图和 tables。当整个脚本执行时,它们也正确地打印在源 window 中。
然而,当我编写文档时,只有图表按我预期的方式包含在内,而数据table没有。我不确定为什么以及如何解决这个问题。
下面是一个玩具示例。很抱歉很长post,但我想展示不同的行为。
源window:
中单个图的输出和table
library(DT)
plot(cars)
datatable(cars)
图表输出和列表中的 tables:
library(DT)
qc_tables <- list()
qc_plots <- list()
qc_plots[[length(qc_plots) + 1]] <- plot(cars)
qc_plots[[length(qc_plots) + 1]] <- plot(iris)
for (p in qc_plots) { print(p) }
qc_tables[[length(qc_tables) + 1]] <- datatable(cars)
qc_tables[[length(qc_tables) + 1]] <- datatable(iris)
for (p in qc_tables) { print(p) }
源中输出的屏幕截图window:
现在编织和html输出:
---
title: "R Notebook"
output:
html_document
---
# Direct output of plots and Data.Tables
```{r}
library(DT)
plot(cars)
datatable(cars)
plot(iris)
datatable(iris)
```
# Output of plots and Data.Tables from lists
```{r}
library(DT)
qc_tables <- list()
qc_plots <- list()
qc_plots[[length(qc_plots) + 1]] <- plot(cars)
qc_plots[[length(qc_plots) + 1]] <- plot(iris)
for (p in qc_plots) { print(p) }
qc_tables[[length(qc_tables) + 1]] <- datatable(cars)
qc_tables[[length(qc_tables) + 1]] <- datatable(iris)
for (p in qc_tables) { print(p) }
```
直接输出的Markdown文件:
通过列表生成它们时缺少 Markdown 输出:
由 reprex package (v0.3.0)
于 2021-01-27 创建
我在这里找到了帮助:
https://github.com/rstudio/DT/issues/67
这对我有用,它不是循环,但生成了所需的输出。
顶部的块:
library(knitr)
library(DT)
现在有两个选项,首先,如果您的数据在数据框中并且您希望以相同的方式对它们进行格式化:
dflist <- list(iris,cars)
htmltools::tagList(
lapply(dflist, datatable)
)
其次,如果如评论中所指出的那样,您提前格式化数据表并将它们放入列表中:
qc_tables <- list()
qc_tables[[length(qc_tables) + 1]] <- datatable(cars)
qc_tables[[length(qc_tables) + 1]] <- datatable(iris)
htmltools::tagList(
lapply(qc_tables, print)
)
Rmd 结果:
我正在使用列表来收集一些 QC 图和 table 由函数生成的应该包含在最终 Rmd 降价 html 文档中的函数。据我所知,代码按预期工作。生成并收集所有图和 tables。当整个脚本执行时,它们也正确地打印在源 window 中。
然而,当我编写文档时,只有图表按我预期的方式包含在内,而数据table没有。我不确定为什么以及如何解决这个问题。
下面是一个玩具示例。很抱歉很长post,但我想展示不同的行为。
源window:
中单个图的输出和tablelibrary(DT)
plot(cars)
datatable(cars)
图表输出和列表中的 tables:
library(DT)
qc_tables <- list()
qc_plots <- list()
qc_plots[[length(qc_plots) + 1]] <- plot(cars)
qc_plots[[length(qc_plots) + 1]] <- plot(iris)
for (p in qc_plots) { print(p) }
qc_tables[[length(qc_tables) + 1]] <- datatable(cars)
qc_tables[[length(qc_tables) + 1]] <- datatable(iris)
for (p in qc_tables) { print(p) }
源中输出的屏幕截图window:
现在编织和html输出:
---
title: "R Notebook"
output:
html_document
---
# Direct output of plots and Data.Tables
```{r}
library(DT)
plot(cars)
datatable(cars)
plot(iris)
datatable(iris)
```
# Output of plots and Data.Tables from lists
```{r}
library(DT)
qc_tables <- list()
qc_plots <- list()
qc_plots[[length(qc_plots) + 1]] <- plot(cars)
qc_plots[[length(qc_plots) + 1]] <- plot(iris)
for (p in qc_plots) { print(p) }
qc_tables[[length(qc_tables) + 1]] <- datatable(cars)
qc_tables[[length(qc_tables) + 1]] <- datatable(iris)
for (p in qc_tables) { print(p) }
```
直接输出的Markdown文件:
通过列表生成它们时缺少 Markdown 输出:
由 reprex package (v0.3.0)
于 2021-01-27 创建我在这里找到了帮助: https://github.com/rstudio/DT/issues/67
这对我有用,它不是循环,但生成了所需的输出。
顶部的块:
library(knitr)
library(DT)
现在有两个选项,首先,如果您的数据在数据框中并且您希望以相同的方式对它们进行格式化:
dflist <- list(iris,cars)
htmltools::tagList(
lapply(dflist, datatable)
)
其次,如果如评论中所指出的那样,您提前格式化数据表并将它们放入列表中:
qc_tables <- list()
qc_tables[[length(qc_tables) + 1]] <- datatable(cars)
qc_tables[[length(qc_tables) + 1]] <- datatable(iris)
htmltools::tagList(
lapply(qc_tables, print)
)
Rmd 结果: