如何基于一个数据集从RMarkdown生成多个HTML文件?
我有一个非常有用的RMarkdown报告,它已经长到了几页,包含HTML文件中的所有图形和表格 它对所有图形和表格使用相同的数据集 我想做的是继续生成这个大型html文件,然后生成几个新的子目录,每个子目录都有自己的html文件,其中的子目录都有自己的html文件 在本例中,完整报告包含有关部门的数据,然后每个子目录将包含与部门内每个组相关的html输出,每个子目录将包含每个组中每个人的html输出的子目录。这样,如果有人只对一个组或一个人的指标感兴趣,他们会查看最合适的输出如何基于一个数据集从RMarkdown生成多个HTML文件?,r,knitr,rstudio,pandoc,r-markdown,R,Knitr,Rstudio,Pandoc,R Markdown,我有一个非常有用的RMarkdown报告,它已经长到了几页,包含HTML文件中的所有图形和表格 它对所有图形和表格使用相同的数据集 我想做的是继续生成这个大型html文件,然后生成几个新的子目录,每个子目录都有自己的html文件,其中的子目录都有自己的html文件 在本例中,完整报告包含有关部门的数据,然后每个子目录将包含与部门内每个组相关的html输出,每个子目录将包含每个组中每个人的html输出的子目录。这样,如果有人只对一个组或一个人的指标感兴趣,他们会查看最合适的输出 Parent di
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中是否有代码块选项,我可以说,块a放在这个html输出文件中,chuck b放在另一个文件中?
2.我是否需要多个RMarkdown文件,每个html输出一个,在它们之间切换某种缓存,这样我就不必重新处理所有数据?(这看起来很傻,因为我需要很多html文件)
3.我是否应该放弃这项任务的RMarkdown?我做了一些像你向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')
}
set使用knitr以编程方式创建标记文档有多种方法。如果您在每个子目录中都有一个标记文件,那么您可以遍历树并创建一个包含所有单独部分的主文档。如果我稍后有时间,我将尝试为您做出正确的回答。我想知道是否有任何方法可以避免为每个Rmd文件加载数据。您好,您如何将数据传递到md文件?诀窍是为您要生成的内容创建模板。下面是一个实现Ryan Hope/Yihui Xie提到的模板概念的SO工作示例:我发现rmarkdown::render
工作得更好,保留标记,如##子目
和浮动目录。@FrankHarrell:我很想知道你的答案是呈现
是否比在.Rmd
中循环和使用标记html
输出html文件更快/更好(如Richard Crawley所建议的那样)如果在每次render()
上都从磁盘文件加载数据,则仍然有效。假设我们必须用100个要写出的html文件循环100次。