2016-12-12 2 views
0

Ich habe gesehen, beide spitze Klammern:Was ist der Unterschied zwischen Knitr `` `{} Chunks und <<>> Chunks?

<<>>= 
... 
@ 

und zurück Zecken:

```{} 
... 
``` 

verwendet, um 'Brocken' in der knitr Dokumentation anzuzeigen. Was ist der Unterschied zwischen diesen beiden?

Zum Beispiel kann ich den folgenden Code-Block aus den documentation ersetzen:

<<my-label, eval=TRUE, dev='png'>>= 
set.seed(1213) # for reproducibility 
x = cumsum(rnorm(100)) 
mean(x) # mean of x 
plot(x, type = 'l') # Brownian motion 
@ 

mit:

```{r my-label} 
set.seed(1213) # for reproducibility 
x = cumsum(rnorm(100)) 
mean(x) # mean of x 
plot(x, type = 'l') # Brownian motion 
``` 

Antwort

4

Die Graviszeichen Syntax in Rmarkdown Dokumenten (Abschlag gemischt mit R-Code verwendet wird: normalerweise als Dateierweiterung .rmd) gespeichert, während die Klammer-Syntax in Dokumenten verwendet wird, die LaTeX mit R-Code mischen (normalerweise als .Rnw gespeichert). Ich bin mir nicht sicher, was ich das Letztere nennen soll; Sie waren früher "Sweave documents", aber das Sweave Paket wurde weitgehend durch das knitr Paket ersetzt. Allerdings knitr (und das Paket) können beide Verfahren sowohl Abschlags + R und LaTeX + R Dokumente ...

Ihre vorgeschlagene Substitution von

```{r chunklabel,..options..} 
... 
``` 

für

<<chunklabel,..options..>>= 
... 
@ 

scheint vernünftig (und es ist sehr einfach, es einfach auszuprobieren!) Natürlich müssen Sie sicherstellen, dass die knitr/ Tools, die Sie verwenden, wissen, mit welchem ​​Syntaxtyp Sie beginnen. knitr::knit scheint (basierend auf Docs) aus der Dateierweiterung zu erraten. Die Dokumente für rmarkdown::render sprechen nur über .rmd.

Der einfachste Weg, um dies herauszufinden, ist wahrscheinlich nur ein paar Experimente zu machen.

+0

danke. Ich vermute also, dass ich den '<<>> ... @' Code hier vertauschen kann: http://yihui.name/knitr/demo/minimal/ mit '\' '' {} '? – Alex

+0

RStudio nennt das "R Sweave", das etwas überflüssig scheint. "R LaTeX" wäre zutreffender und paralleler mit "R Markdown" und "R HTML". – alistaire

0

Ein Unterschied scheint zu sein, wenn chunk Referenzen mit Brocken von this question adressierten wieder zu verwenden, und die link to the documentation on Reference/Macro, die nur die Verwendung von <<>> Typ Brocken machen. Duplizieren Sie das Beispiel:

<<chunk1>>= 
1 + 1 
@ 

<<chunk2>>= 
<<chunk1>> 
@ 

so dass der zweite Brocken einfach den Code in chunk1 dupliziert.

Um dies in zurück tick Brocken zu konvertieren, Sie scheinen tun zu müssen:

```{r chunk1} 
1 + 1 
``` 

, dass ein direkter Ersatz ist, wie es in meiner Frage und Ben Bolker Antwort vorgeschlagen.Um jedoch beziehen sich auf chunk 1, scheint es, dass spitzen Klammern sind erforderlich, noch:

```{r chunk2}``` 
<<chunk1>> 
``` 

Darüber hinaus beachten Sie, dass Sie den Code zu verlassen, wie ist:

<<chunk2>>= 
<<chunk1>> 
@ 

nicht funktioniert, zumindest in Bezug auf rmarkdown::render mit der Datei gespeichert mit .Rmd Erweiterung.

Verwandte Themen