2017-05-03 31 views
6

Opcja porcji w Rmarkdown umożliwia łatwe tworzenie tekstu zawierającego nagłówki. Jednak chcę dynamicznie utworzyć nagłówek z opcją asis, ale w tym samym fragmencie kodu wstawić trochę grafiki.Programowe wstawianie nagłówka i wykresu w tym samym fragmencie kodu z oznaczeniem R za pomocą wyników = 'asis'

Najbardziej pokrewną odpowiedzią, jaką można znaleźć, jest tutaj: Programmatically insert text, headers and lists with R markdown, ale odpowiedź na to pytanie nie pozwala na dynamiczne nagłówki i wykresy w obrębie dynamicznych nagłówków.

Oto prosty przykład następujący sposób powtarzalny wykazać, co mogę, a czego nie można osiągnąć z results = 'asis'

kod bezpośrednio poniżej jest co by się spodziewać, tworząc nagłówek dla każdego gatunku.

--- 
output: html_document 
--- 
```{r echo = FALSE, results ='asis'} 
for(Species in levels(iris$Species)){ 
    cat('#', Species, '\n') 
} 
``` 

Kod bezpośrednio pod tym adresem nie spełnia moich oczekiwań. Idealnie, kod bezpośrednio poniżej wygeneruje nagłówek dla każdego gatunku z działką pod każdym nagłówkiem. Zamiast tego generuje pojedynczy nagłówek setosa w pliku wyjściowym, a następnie trzy wykresy.

--- 
output: html_document 
--- 
```{r echo = FALSE, results ='asis'} 
library(ggplot2) 
for(Species in levels(iris$Species)){ 
    cat('#', Species, '\n') 
    p <- ggplot(iris[iris$Species == Species,], aes(x = Sepal.Length, y = Sepal.Width)) + 
    geom_point() 
    print(p) 
} 
``` 

Czy istnieje sposób dynamicznego generowania 3 nagłówków z działką pod nagłówkiem?

Odpowiedz

11

Trzeba dodać kilka nowych linii po działkach i przed nagłówkami, używając cat('\n'):

```{r echo = FALSE, results ='asis'} 
library(ggplot2) 
for(Species in levels(iris$Species)){ 
    cat('\n#', Species, '\n') 
    p <- ggplot(iris[iris$Species == Species,], aes(x = Sepal.Length, y = Sepal.Width)) + 
    geom_point() 
    print(p) 
    cat('\n') 
} 
Powiązane problemy