2014-01-10 8 views
8

Ein einfacher Brocken in R Abschlag:Können Markdown-Ausdrücke und Ergebnisse im selben Block verschachtelt werden?

```{r} 
1 + 2 
3 + 4 
``` 

den folgenden erzeugen würde, wenn knitr in HTML umwandelt:

<pre><code class="r">1 + 2</code></pre> 
<pre><code>## 3</code></pre> 

<pre><code class="r">3 + 4</code></pre> 
<pre><code>## 7</code></pre> 

Ich versuche, die Ausdrücke und Ergebnisse in einem Block

<pre><code class="r"> 
1 + 2 
## 3 
3 + 4 
## 7 
</code></pre> 
zur Ausgabe

Ich habe versucht, mit den Chunk-Parametern (z. B. Ergebnisse und Echo) vergeblich herumzubasteln. Gibt es einen Weg, dies zu erreichen?

Hinweis: Ich könnte wahrscheinlich bei CSS mit ::first und ::last Selektoren hacken, aber ich bin gespannt, ob es eine integrierte Option gibt.

Antwort

7

Dies kann mit hooks erfolgen. Fügen Sie den folgenden Codeblock rechts oben in Ihrem Dokument Rmd hinzu. Es verwendet den Dokument-Hook, der auf der Datei md auf der letzten Stufe knitting ausgeführt wird. Der unten definierte Hook identifiziert nachfolgende Code-Chunks ohne irgendeinen Textabschnitt dazwischen und kollabiert ihn in einen.

```{r setup, cache = F, echo = F} 
knitr::knit_hooks$set(document = function(x){ 
    gsub("```\n*```r*\n*", "", x) 
}) 
``` 

HINWEIS. Es ist wichtig, cache = F in diesem Chunk zu setzen, damit dieser Code immer ausgeführt wird.

+0

Ich füge hinzu, dass Sie auch 'echo = FALSE' hinzufügen sollten. Ansonsten erscheint diese Funktion am Anfang jeder Datei. Danke für die Antwort! – sharoz

+0

Sehr Wahr @ Sharoz. Ich habe meine Antwort aktualisiert, – Ramnath