Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/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中的文本部分_R_Knitr_R Markdown - Fatal编程技术网

使用循环生成rmarkdown中的文本部分

使用循环生成rmarkdown中的文本部分,r,knitr,r-markdown,R,Knitr,R Markdown,我需要生成一个由几个部分组成的报告,所有部分看起来都很相似,只是数据上有一些差异。节数也取决于数据。我最终想要的是这样的东西: ```{r} section_names = c("A","B","C") section_data = c(13,14,16) ``` # some looping mechanism here with variable i This is section `r section_names[i]` This section's data is `r s

我需要生成一个由几个部分组成的报告,所有部分看起来都很相似,只是数据上有一些差异。节数也取决于数据。我最终想要的是这样的东西:

```{r}
  section_names = c("A","B","C")
  section_data = c(13,14,16)
```

# some looping mechanism here with variable i

This is section `r section_names[i]`

This section's data is `r section_data[i]`

#more things go here for the section

#end of loop should go here
结果应该是一个单独的html/文档,包含一个接一个的所有部分

你能告诉我一种使用循环生成这样一个Rmd文件的方法吗

理想情况下,我希望在PHP中看到类似的内容:

<$php for(i=0;i<10;i++) { ?>
   ## some html template + code chunks here
<$php } ?>

这个问题类似于,尽管它是基于LateX/RNW的。此外,演示了如何动态生成rmarkdown文档。然而,这两个问题都不是这个问题的完全重复

基本上,需要采取两个心理步骤:

  • 找出每个部分所需的降价标记。这可能是类似于

    ## This is section <section_name>
    Section data is `<section_data>`.
    Additional section text is: <section_text>.
    
    输出: 这是A区 截面数据为
    0.83
    。 附加章节文本为:PuftzQfcyjfnenmaaudptwiklbsvkwmjwodfhsprjrrotvdgnerobvqpllmvnpouhgvgrpmkaoomvyxkmgmuhnywzgprawpylu

    这是B部分 截面数据为
    0.49
    。 附加章节文本为:PFTYCGFSMSMAYSSCZWLNLDOQEBJYEVSJIYDJPEPSWQBNWJVRUKBYUSTOICFKJFEJCWCAYBCQSRTXUDEQLXCZNPUKNLJIQJXE

    这是C部分 截面数据为
    0.58
    。 附加章节文本为:fcjddmnlbusjmczvsbpywcksjearbxxfpagbtkcwkhpedgyytnglvgqgjafzrumnsdchktmgrfnsuzkflougnwhubnlvmgdb

    这是D部分 截面数据为
    0.52
    。 附加章节文本为:YQIXHABFVQUAYZNWTZXJDISLTZJJAZLJMJSXENFTUOFOTYKDNNUMFDXLJSWZEVDLCLSYCTSMEXFLBVQYRTBEVZLCTEBPUGTT


    只是分享我最终使用的方法


    我为这个部分写了一个降价文件。为主控文档中的每个部分准备数据,并循环遍历我需要的所有部分,每次使用Rmd部分调用knit_child()。

    我知道这太晚了,但我在代码中使用它来制作编号的部分,效果很好

    for (k in 1:length(listcsv)){ #Begin Loop at pdf file one and continue until all have been completed
    subsection <- paste("5", k, sep = ".")}
    
    for(k in 1:length(listcv)){#从pdf文件1开始循环,并继续循环,直到完成所有操作
    
    小节在这种情况下,“section”是什么意思?它只是一块要插入的文本?还是每个名称对应一块文本?可能是@Ben的副本不完全相同。在你提到的帖子中,问题是关于生成多个pdf文档。我感兴趣的是基于数据的同一报告的结构,也就是说,生成为许多部分都需要(基于数据)。类似,但不重复。@Heroka有一堆文本,可能的代码块需要一个接一个地“编织”几次,每次都使用稍微不同的数据。我编辑了我的问题,以澄清这一点,当然,这是可行的,但它实际上是在编程解决方案,而不是“模板化”它。Rmarkdown之美(我自己的观点)是指它不需要编程就可以创建一个简单的文档模板,只使用编程来计算文档所需的数据。这可能是一个风格问题。最终,我用另一种方式解决了这个问题。请看下面的答案。@amit我倾向于不同意。在你的问题中,文档的全部内容都是数据。因此,很自然re有很多“处理数据”/编程和少量纯文本。但是“模板化”“部分也在那里:查看我的变量
    模板
    …无论如何,我很快就会看到你的解决方案。@阿米特好,阅读你的解决方案。从技术上讲,它非常相似。我的
    模板
    是你的子文档。我的
    sprintf
    是你的
    knit\u孩子
    。我同意这种相似性,只是我对它非常敏感。”“关注点分离”的问题,所以我不喜欢我的模板被编程,而是真正的文档。同样,这是一个品味的问题。另外,虽然从我的简单示例看不明显,但真正的使用要求每个部分都相当大(超过3个句子,更像3-4页的文本、图表)-所以额外的RMD文件更有意义,我认为。@amit使用更复杂的模板,我完全同意。仅使用简单的模板,子文档的额外复杂性(另一个RMD->MD->include步骤)不值得分离关注点优势,IMHO。
    
    for (k in 1:length(listcsv)){ #Begin Loop at pdf file one and continue until all have been completed
    subsection <- paste("5", k, sep = ".")}