2017-06-08 1 views
1

Mit Rstudio eine Rmarkdown Datei zu bearbeiten, verwende ich HTML-Kommentare große Blöcke markieren, die ich will nicht verarbeitet haben oder in der Ausgabe. Das funktioniert gut in Rstudio, das alles in den Kommentaren ignoriert. Wenn ich jedoch Rstudio anflehe, das Dokument zu stricken, führt knitr die R Codeblöcke in den Kommentaren aus.knitr Ausführung R Code Chunks in HTML-Stil kommentiert

Hier ist eine MWE .Rmd Datei:

# Important stuff I want to see 
This is what I want to see: 
```{r} 
pi # I like pi 
``` 
<!--- 
**This section commented out, as not ready to be knit yet** 
This is what I do not want to see: 
```{r} 
cake # I also like cake, but it's undefined 
``` 
--> 

Dies bewirkt, dass knitr scheitern mit Error in eval(expr, envir, enclos) : object 'cake' not found ... Execution halted

Gibt es eine einfache Möglichkeit, ganze Schwaden von einer Rmarkdown Datei auszukommen, die die R von der Ausführung knitr verhindert Code Brocken in den Kommentaren?

Ich habe global comment option for R markdown in knitr und Comments in Markdown, sowie https://yihui.name/knitr/ betrachtet, aber habe keine Lösung gefunden.

+0

Einfach das ganze Teil auswählen und Strg + Shift + C drücken? –

+1

Nur FYI https://github.com/yihui/knitr/issues/1363 –

+0

Dank Yihui - Ich werde mich erinnern, nächstes Mal, wenn ich ein Problem habe. Danke auch für ein fantastisches Werkzeug! – chriss

Antwort

0

Wählen Sie die Zeilen vor und nach dem {r} Code-Chunk und verwenden Sie Control/Shift-C (pc) zum Auskommentieren. Du wirst diese Art von Syntax bekommen; Es wird nicht gestrickt und gibt keinen Fehler.

<!-- **This section commented out, as not ready to be knit yet** --> 
<!-- This is what I do not want to see: --> 
<!-- ```{r} --> 
<!-- cake # I also like cake, but it's undefined --> 
<!-- ``` --> 
+0

Nun, das funktioniert :) Es ist eine Art der nuklearen Option, obwohl. Ich glaube, ich suche wirklich eher einen Blockkommentar als einen linienweisen Kommentar. Dies ist für große Abschnitte (die ich habe) etwas unhandlich und bedeutet, dass Sie beim Kopieren/Einfügen von Abschnitten zwischen dem kommentierten Abschnitt und anderen Stellen im Dokument zeilenweise auskommentieren müssen. Irgendwelche Gedanken zu einem Block Kommentar, der mit 'Knitr' funktioniert? – chriss

+0

Es ist für meine Zwecke marginal besser, den HTML-Blockkommentar so zu verwenden, wie ich ihn hatte, und dann am Anfang jeder Zeile ein anderes Kommentarzeichen hinzuzufügen, wie eine '#'. Dies ist weniger visuelles Rauschen, da es nur ein einzelnes Zeichen am linken Rand ist und beim späteren Kopieren leichter eingefügt werden kann. Aber es ist immer noch linienweise ... (Ich mache meine Bearbeitung in vim, aber interagiere mit Knitr über Rstudio ...) – chriss

0

Im zweiten Code Junk könnten Sie eval=F gesetzt, bis Sie diesen Teil des Codes beendet haben.

<!-- 
**This section commented out, as not ready to be knit yet** 
This is what I do not want to see: 
```{r eval=F} 
cake # I also like cake, but it's undefined 
``` 
--> 
+0

Eigentlich mag ich deine Idee hier. Es skaliert nicht direkt zu großen Abschnitten mit mehreren Code-Blöcken, sondern setzt die Standard-Chunk-Optionen auf "eval = FALSE" am Anfang des Kommentars und zurück auf "eval = TRUE" am Ende, was genau das tut, was ich tue brauchen – chriss

1

Idee Unter jburkhardt eval=F zu verwenden, funktioniert dies als einen Weg Block Kommentare zu tun, wo knitr nicht die R Codeblöcke ausführt:

Stuff I want to see... 
```{r} 
pi 
``` 

<!-- 
This is added at the beginning of the comment: 
```{r, include=FALSE} 
knitr::opts_chunk$set(eval= FALSE) 
``` 

Stuff I have commented out: 

```{r} 
cake 
``` 

This is added to the end of the comment: 
```{r, include=FALSE, eval=TRUE} 
knitr::opts_chunk$set(eval= TRUE) 
``` 
--> 

More stuff I want to see: 
```{r} 
2*pi 
``` 

Es ist ein bisschen klobig, und es ist sicherlich nicht kugelsicher (Zum Beispiel, knitr wird immer noch alle Code-Blöcke laufen, die es mit expliziten eval=true findet), aber es funktioniert in meinem Fall.

Verwandte Themen