使用Rmarkdown嵌入Rmarkdown,无需编织评估

时间:2016-02-17 14:17:15

标签: r knitr r-markdown

我想演示如何编写RMarkdown,其中所述RMarkdown演示嵌入在用于创建课程材料的RMarkdown文档中。在这个受围栏的代码块中,我不希望希望knitr执行该块。

我想把这样的东西放到我的"顶级" Rmarkdown文档,并在输出HTML文档中以固定宽度逐字打印外部栅栏之间的所有内容,而不是让knitr评估内部嵌入的R代码块和内联代码。

```
---
title: "RMarkdown teaching demo"
author: "whoever"
---

# Major heading

Here's some text in your RMarkdown document. Here's a code chunk:

```{r, eval=FALSE}
head(mtcars)
```

Now we're back into regular markdown in our embedded document.

Here's inline code that I don't want executed either; 
e.g. mean of mpg is `r mean(mtcars$mpg)`.

```

我已尝试zero-width space trick in knitr example 65,但在尝试编译为PDF时失败(我需要HTML和PDF)。

4 个答案:

答案 0 :(得分:14)

这是实现它的一种方法。您可以在块头之前添加`r ''`,以便无法识别代码块,并使用knitr::inline_expr()生成`r `

````
---
title: "RMarkdown teaching demo"
author: "whoever"
---

# Major heading

Here's some text in your RMarkdown document. Here's a code chunk:

`r ''````{r, eval=FALSE}
head(mtcars)
```

Now we're back into regular markdown in our embedded document.

Here's inline code that I don't want executed either; 
e.g. mean of mpg is `r knitr::inline_expr('mean(mtcars$mpg)')`.

````

如果您只是将R Markdown示例文档保存在单独的文件中,并通过readLines()将其包含在顶级文档中,将会更容易,例如

````
`r paste(readLines('example.Rmd'), collapse = '\n')`
````

要在受防护的代码块中包含三个反引号,您需要三个以上的反引号。这就是为什么我在这里使用四个。

答案 1 :(得分:4)

我使用cat函数执行此操作,该函数适用于HTML和PDF输出。

---
title: "RMarkdown teaching demo"
author: "whoever"
---

# Major heading

Here's some text in your R Markdown document. Here's a code chunk:

```{r, echo=FALSE, comment=""}
cat(c("```{r, eval=FALSE}",
      "head(mtcars)",
      "```"), 
    sep='\n')
```

Now we're back into regular Markdown in our embedded document.

Here's inline code that I don't want executed either: 

```{r, echo=FALSE, comment=""}
cat("The mean of mpg is `r mean(mtcars$mpg)`.")
```

答案 2 :(得分:1)

不确定pdf输出,但是使用以下代码包围您的演示rmarkdown:

<pre>
...
</pre>

似乎适用于html。

答案 3 :(得分:1)

与R Markdown 2.1一起使用的简单解决方案涉及使用空格和转义刻度:

````    ```{r, eval=FALSE}    ````  
```head(mtcars)```  
````    ```    ````

请注意,每行分别转义。在四个刻度线和三个刻度线之间有四个空格。在第一行和第二行的最后一个刻度线之后有两个空格,用于插入换行符。