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

时间:2016-02-02 18:46:35

标签: r knitr r-markdown

我有一个带有一些块和一些文本的Rmd文件。如何将该文件中的输出(包括文本)添加到另一个Rmd文件中,使用purl或类似的东西调用第一个文件?

由于

1 个答案:

答案 0 :(得分:0)

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

```{r conditional, child = if (override == "report") 'leaflet_child.Rmd' else 'footer.Rmd'} 
``` 

就你的perl代码而言,如果条件== T,我会把它放在一个子.Rmd中。另请注意,子页面执行块应该执行此操作,:执行一个或另一个.Rmd。如果在该块中添加其他命令,则会发出警告。

这些条件也可以通过commandArgs传递,就像我的项目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" 
}

另一种非常“hacky-er”的方法是使用sed或awk从文档中提取文本并将其传输到新的.Rmd文件中。我只会采用这种方法作为最后的手段,并且有大量的例子,基本的谷歌搜索Sed或Awk。最好的,德里克

相关问题