在另一个Rmd文件中使用purl函数显示Rmd文件中的文本

在另一个Rmd文件中使用purl函数显示Rmd文件中的文本,r,knitr,r-markdown,R,Knitr,R Markdown,我有一个Rmd文件,有一些块和一些文本。如何将包含该文件中文本的输出添加到另一个Rmd文件中,用purl或类似的方式调用第一个Rmd文件 谢谢有几种方法可以做到这一点。我认为,更好的方法是创建一个子Rmd页面,该页面是有条件执行的。我经常使用它来最小化我维护的报告代码量。您没有提供代码示例,但我的一个报告中有一个过程,它根据条件执行两个不同的Rmd: ```{r conditional, child = if (override == "report") 'leaflet_child.Rmd'

我有一个Rmd文件,有一些块和一些文本。如何将包含该文件中文本的输出添加到另一个Rmd文件中,用purl或类似的方式调用第一个Rmd文件


谢谢

有几种方法可以做到这一点。我认为,更好的方法是创建一个子Rmd页面,该页面是有条件执行的。我经常使用它来最小化我维护的报告代码量。您没有提供代码示例,但我的一个报告中有一个过程,它根据条件执行两个不同的Rmd:

```{r conditional, child = if (override == "report") 'leaflet_child.Rmd' else 'footer.Rmd'} 
``` 
就您的perl代码而言,如果条件==T,我将把它放在要执行的一个子.Rmd中。另外,请注意,子页面执行块应该做到这一点,并且仅此而已:执行一个或另一个.Rmd。如果在该块中添加其他命令,它将抛出警告

这些条件也可以通过commandArgs传递,就像我的project make文件中的示例一样,它传递now参数,然后有条件地执行某些Rmd文件:

Rscript $(R_OPTS) -e "rmarkdown::render('putyourscripthere.Rmd')" now
这在Rmd中通过类似这样的方式获取,在出现null commandArg时设置默认值:

# Command arguments
if(length(commandArgs(trailingOnly=TRUE)>0)) {
      override <- commandArgs(trailingOnly=TRUE) 
  } else {
      override <- "report" 
}

另一种非常黑客的方法是使用sed或awk从文档中提取文本并将其导入一个新的.Rmd文件。我只会把这种方法作为最后的手段,而且有很多例子都是基本的谷歌搜索Sed或Awk。最好的,Derek

我有一个主Rmd文件,根据给定的条件,我想在其中包括其他Rmd文件。例如,这将是主Rmd:{r}ifcondition==T{sourcepurlconditionalFile.Rmd,output=tempfile,…}