2016-06-22 16 views
1

Ich habe 2 Fragen zu knitr Optionen Brocken:knitr: Wie bekommen und Chunk Optionen außer Kraft setzen von innen ein Stück

1) Ist es möglich, knitr chunk Optionen aus dem Inneren eines Stück Code zu überschreiben, so dass die Optionen wurden in demselben Brocken angewendet? z.B. so etwas wie die folgenden Zeilen schreiben und as-is erhalten führen:

```{r, results= "markup"} 
    knitr::opts_chunk$set(results= "asis") 
    for (i in 1:5) 
     print("# This text should be printed 'as-is'") 
``` 

P. S. Ich kenne knitr::asis_output.

2) Ist es möglich, Chunk-Optionen aus einem Brocken zu bekommen? Z. B. verwenden Code wie:

```{r} 
    knitr::opts_chunk$get("results") 
``` 

Und String markup bekommen.

```{r, results='asis'} 
    knitr::opts_chunk$get("results") 
``` 

Und erhalten Zeichenfolge asis.

Leider erhält knitr::opts_chunk$get("results") globale Optionen, und nicht die eines aktuellen Chunk.

+1

Was ist Ihr Ziel? – Alex

+0

Schreiben Sie eine Funktion, die 'knitr'-chunk-Option auf' results = 'asis' zurücksetzt und mehrere Textzeilen ('as-is') und, sagen wir, mehrere' trellis'- und 'plotly'-Objekte ausgibt. – Vilmantas

+0

Kennen Sie das? http://yihui.name/knitr/hooks/ – Alex

Antwort

3

1) Die Ausdrucke können mit den Funktionen knitr::normal_print und knitr::asis_output (wie erwähnt) angepasst werden. Zum Beispiel:

```{r, results='markup'} 
knitr::asis_output(replicate(5, "# This text should be printed 'as-is'\n")) 

print("# This text should be printed 'normal'") 
``` 

und alternativ

```{r, results='asis'} 
for (i in 1:5) 
    cat("# This text should be printed 'as-is'\n") 

knitr::normal_print("# This text should be printed 'normal'\n") 
``` 

2) Aktuelle chunk Optionen können mit knitr::opts_current$get() abgerufen werden. Verwendung:

```{r, results='asis'} 
knitr::opts_current$get("results") 
``` 

und erhalten String asis