我有几个R脚本使用#'
进行记录,目的是将所有脚本合并到一个.Rmd
文件中。
我从this post看到,使用主.Rmd
文件中的代码块组合多个.Rmd
文件真的很直接
这很好,但我更喜欢将我的代码保留为.R
文件,因为它的运行速度更快,并且文档的呈现不会经常发生。
首先我在主降价文件中尝试了这个:
```{r, child = "script.R"}
```
但这并没有正确呈现 - 基本上是一堆带有#'
的降价文字。
然后我尝试使用此blog post中描述的内容,以便将R脚本合并到一个降价文件中:
```{r}
library(rmarkdown)
rmarkdown::render("script.R")
```
但这只会生成script.md
并且不会将markdown嵌入到主文件中。有关如何在主文件中正确呈现.R
脚本作为降价的任何想法?
答案 0 :(得分:2)
这是我的方法。它将使用rmarkdown::render
生成md文件,然后通过将results
选项设置为asis
来读取md文件的内容并将其合并到主文件中。缺点是该方法生成一些临时文件,它可能不是非常高效,但它实现了目标。
---
title: "test"
author: "Consistency"
date: "2017/6/29"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
join <- function(ls, sep = ", "){
do.call(paste, append(ls, list(sep = sep)))
}
inline_render <- function(script_name){
suppressMessages(capture.output(rmarkdown::render(paste0(script_name, ".R"), output_format = "rmarkdown::md_document"), file = "tmp"))
cat(join(readLines(paste0(script_name, ".md")), "\n"))
}
```
```{r script, echo=FALSE, results='asis'}
inline_render("script")
```
```{r script1, echo=FALSE, results='asis'}
inline_render("script1")
```