我有一个非常有用的RMarkdown报告,并且已经增长到几页,包含HTML文件中的所有数字和表格。
它对所有图表使用相同的数据集。
我想要做的是继续生成这个大的html文件,然后生成几个新的子目录,每个子目录都有自己的html文件和子目录,每个子目录都有自己的html文件。
在这种情况下,完整报告包含部门的数据,然后每个子目录将包含与部门内每个组相关的html输出,并且每个子目录将包含每个组中每个人的html输出的子目录。这样,如果某人只对一个组或一个人的指标感兴趣,他们会查看最合适的输出。
Parent dir: The same large html file with figures and tables generated with data for entire dept.
|
__Subdir for each group: Output based on same data but only the group's metrics
|
__Subdir for each person: Output based on same data but only individual's metrics
安排这个的最佳方式是什么?
1.在RMardkown中是否有代码块选项,我可以说,chunk a在这个html输出文件中,chuck b进入另一个?
2.我是否需要多个RMarkdown文件,每个html输出一个,它们之间有某种缓存,所以我不必重新处理所有数据? (这看起来很傻,因为我需要很多html文件)
3.我应该放弃RMarkdown来完成这项任务吗?
答案 0 :(得分:3)
我做了像你这样的事情,并与knitr一起提出,而且效果非常好。
不要告诉任何人,但我会使用' for'循环遍历一堆议会,每个委员会得到相同的报告,但他们的数据。然后我将报告推送到目录结构中,压缩并邮寄。我有一个Rmd文件,需要两个数据集,setA(作为主题)和setB(作为其对等)
流程如下:
set <- assemble_data() # loads whole set
for (report in report_list) {
setA <- filter(set, subject == report)
setB <- filter(set, subject != report)
output_html <- str_c('path/',report,'.html')
knit_interim <- str_c('path/',report,'md')
knit_pattern <- 'name of RMd' # I generate more than one report for each place
knit(knit_pattern)
markdowntoHTML(file = knit_interim, output=output_html, stylesheet=stylesheet, encoding='windows-1252')
}
通过这种方式,我可以在几分钟内生成报告集。我的情况可能比你的情况简单,因为报告结构是相同的 - 它是变化的数据集。
请注意,这不是代码的粘贴(它比这稍微复杂一点),所以要注意错别字等。
关键点(据我所知)是编写一个Rmd,它需要一个特定名称的数据集,而R代码为它提供了本地范围。我最初用它挣扎但是它的执行非常简单。
[更新:&#39;如何将数据传递到RMd文件?&#39;
你没明确需要。在上面的代码中,RMd写入了期望setA和setB中的数据。
它使工作流程变得非常简单 - 您使用数据集编写模板(手动过滤一个),然后当您准备就绪时,您可以运行循环。就像我说的那样,我起初有点挣扎,但只是跳了进来,这一切都很顺利。