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