Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将DT表合并到Rmd降价文件中_R_R Markdown_Dt_Htmlwidgets - Fatal编程技术网

将DT表合并到Rmd降价文件中

将DT表合并到Rmd降价文件中,r,r-markdown,dt,htmlwidgets,R,R Markdown,Dt,Htmlwidgets,我使用列表来收集一些由函数生成的QC图和表,这些图和表应该包含在最终的Rmd标记html文档中。据我所知,代码按预期工作。生成并收集所有绘图和表格。当整个脚本执行时,它们也会正确地打印在源窗口中 但是,当我编写文档时,只有绘图按我所期望的方式包含,而数据表则没有。我不知道为什么以及如何解决这个问题 下面是一个玩具的例子。很抱歉写了这么长的帖子,但我想展示一下不同的行为 源窗口中单个绘图和表格的输出: 库(DT) 地块(汽车) datatable(汽车) 从列表中输出绘图和表格: 库(DT

我使用列表来收集一些由函数生成的QC图和表,这些图和表应该包含在最终的Rmd标记html文档中。据我所知,代码按预期工作。生成并收集所有绘图和表格。当整个脚本执行时,它们也会正确地打印在源窗口中

但是,当我编写文档时,只有绘图按我所期望的方式包含,而数据表则没有。我不知道为什么以及如何解决这个问题

下面是一个玩具的例子。很抱歉写了这么长的帖子,但我想展示一下不同的行为

源窗口中单个绘图和表格的输出:

库(DT)
地块(汽车)

datatable(汽车)

从列表中输出绘图和表格:

库(DT)
qc_tables我在这里找到了帮助:

这对我来说很有效,它不是一个循环,而是生成了所需的输出。
顶部的块:

library(knitr)
library(DT)
现在有两个选项,首先,如果您的数据位于数据帧中,并且您希望以相同的方式对其进行格式化:

dflist <- list(iris,cars)
htmltools::tagList(
  lapply(dflist, datatable)
)

感谢布莱恩。不幸的是,这个解决方案不适合我。生成这些QC表的函数相当长且特定:它获取大量不同的数据切片,然后针对数据子集格式化这些表。因此,挑战在于从列表中提取已经生成的表。我现在可以逐一列举,因为表的数量没有变化。然而,这个解决方案并不是特别优雅。。。但它现在可以工作了。我更新了我的答案,让它可以使用列表中的数据帧或列表中的DTs。太棒了!这很有效。非常感谢。接下来,尝试理解为什么它不能开箱即用,需要通过
htmltools::tagList
进行额外包装…这不是一个非常复杂的答案,但我认为是因为
datatable
的输出最终是一个HTML对象,因此,需要
htmltools::tagList
在存在多个标记时正确渲染它们。也许吧?谢谢你的尝试,布莱恩。我只是不明白为什么当我手动打印它们(例如,
print(qc_plot[[1]]、qc_plot[[2]]、…
)时,它们似乎呈现得很好,但当我表面上在
for
循环中或通过
lappy
做同样的事情时,它们却呈现得很好。
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)
)