2017-05-03 89 views
6

Rmarkdown içindeki results = 'asis' öbek seçeneği, başlıkları içeren bir metni kolayca dinamik olarak oluşturmanızı sağlar. Ancak, dinamik olarak asis seçeneği ile bir başlık oluşturmak istiyorum, ancak daha sonra aynı kod içinde bazı grafikler ekleyin.Program eşanlamlı olarak satır ve satırları aynı kodda R harfi ile sonuçları kullanarak işaretleyin = 'asis'

Bunun için bulabileceğiniz en ilgili cevap şudur: Programmatically insert text, headers and lists with R markdown, ancak bu sorunun cevabı, dinamik üstbilgilerdeki dinamik üstbilgileri ve grafikleri etkilemez. İşte

basit tekrarlanabilir örnekte, her Türlerin için bir başlık oluşturarak, ben ve ben beklenebilir gelmez Ne results = 'asis'

doğrudan aşağıdaki kod ile ulaşamayacağını ne gösteren izler olduğunu.

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

Buradaki kod doğrudan aşağıda istediğim şeyi yapmaz. İdeal olarak, doğrudan aşağıya kod, her bir başlığın altında bir arsaya sahip her Tür için bir başlık oluşturacaktır. Bunun yerine, çıktı dosyasındaki tek setosa başlığını ve ardından üç grafiği oluşturur.

--- 
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) 
} 
``` 

Her başlık altında bir arsa içeren 3 başlığın dinamik olarak oluşturulmasının bir yolu var mı?

cevap

11

Sen cat('\n') kullanarak, araziler sonra üstbilgilerinse önce bazı yeni satır eklemek gerekir:

```{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') 
}