将 Rmarkdown 与 Rmarkdown 一起嵌入,无需 knitr 评估

问题描述 投票:0回答:5

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

我想将这样的内容放入我的“顶级”Rmarkdown 文档中,并在输出 HTML 文档中以固定宽度逐字打印外栅栏之间的所有内容,而不是让 knit 评估内部嵌入的 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)`.

```

我已经在knitr示例65中尝试了零宽度空格技巧,但是在尝试编译为PDF时失败了(我需要HTML和PDF)。

r knitr r-markdown
5个回答
18
投票

这是实现它的一种方法。您可以在块头前添加

`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')`
````

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


5
投票

我使用

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)`.")
```

3
投票

不确定 pdf 输出,但将演示 rmarkdown 包围:

<pre>
...
</pre>

似乎适用于 html。


1
投票

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

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

请注意,每一行都是单独转义的。四个刻度线和三个刻度线之间有四个空格。并且第一行和第二行的最后一个刻度线后面有两个空格用于插入换行符。


0
投票

自2022年6月16日起,knitr v1.37,推荐的方法是使用

verbatim
引擎,即。

````{verbatim}
```{r}
head(mtcars)
```
````
© www.soinside.com 2019 - 2024. All rights reserved.