2016-02-17 16 views
13

Ich möchte demonstrieren, wie RMarkdown zu schreiben, wo RMarkdown Demonstration in ein RMarkdown-Dokument eingebettet ist verwendet, um das Kursmaterial zu erstellen. Innerhalb dieses umzäunten Codeblocks möchte ich nicht knitr ausführen, um den Chunk auszuführen.Embed Rmarkdown mit Rmarkdown, ohne Knitrevolution

Ich möchte so etwas in mein "top level" Rmarkdown Dokument einfügen, und alles, was zwischen den äußeren Zäunen ist, wortwörtlich in fester Breite im HTML-Ausgabedokument drucken, anstatt den inneren eingebetteten R-Code auszuwerten Chunk- und Inline-Code.

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

``` 

Ich habe die zero-width space trick in knitr example 65 versucht, aber dies nicht gelingt, wenn in PDF zu kompilieren versuchen (ich brauche HTML und PDF).

Antwort

12

Hier ist eine Möglichkeit, dies zu erreichen. Sie können `r ''` vor dem Chunk-Header hinzufügen, so dass der Code-Chunk nicht erkannt wird, und knitr::inline_expr() verwenden, um `r ` zu generieren.

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

```` 

Es wird leichter, wenn Sie nur das R Markdown Beispiel Dokument in einer separaten Datei speichern und schließen sie in dem Top-Level-Dokument über readLines(), z.B.

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

Um drei Backticks in einen umzäunten Codeblock aufzunehmen, benötigen Sie mehr als drei Backticks. Deshalb benutze ich hier vier.

+0

Das funktioniert, ich würde nur den unteren Zaun auf die gleiche Weise schließen, mit 'r '' '' '. Ansonsten gerät die Syntax-Hervorhebung in RStudio außer Kontrolle. –

+0

Rechts. Das würde RStudio bei der Syntax-Hervorhebung helfen, obwohl es nicht notwendig ist, dass knitr funktioniert. –

+0

Für mich ('rmarkdown_1.0') benötigt das Inline-Stück zusätzliches Escaping für Backticks. – tonytonov

1

Nicht sicher über die PDF-Ausgabe, sondern rund um Ihre Demo rmarkdown mit:

<pre> 
... 
</pre> 

scheint für HTML zu arbeiten.

+0

yep, nicht für pdf. –

4

Ich mache dies mit der cat-Funktion, die für HTML-und PDF-Ausgabe funktioniert.

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