Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
如何基于一个数据集从RMarkdown生成多个HTML文件?_R_Knitr_Rstudio_Pandoc_R Markdown - Fatal编程技术网

如何基于一个数据集从RMarkdown生成多个HTML文件?

如何基于一个数据集从RMarkdown生成多个HTML文件?,r,knitr,rstudio,pandoc,r-markdown,R,Knitr,Rstudio,Pandoc,R Markdown,我有一个非常有用的RMarkdown报告,它已经长到了几页,包含HTML文件中的所有图形和表格 它对所有图形和表格使用相同的数据集 我想做的是继续生成这个大型html文件,然后生成几个新的子目录,每个子目录都有自己的html文件,其中的子目录都有自己的html文件 在本例中,完整报告包含有关部门的数据,然后每个子目录将包含与部门内每个组相关的html输出,每个子目录将包含每个组中每个人的html输出的子目录。这样,如果有人只对一个组或一个人的指标感兴趣,他们会查看最合适的输出 Parent di

我有一个非常有用的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中是否有代码块选项,我可以说,块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次。