2017-05-03 18 views
6

Tùy chọn đoạn results = 'asis' trong Rmarkdown cho phép một cách dễ dàng tạo văn bản bao gồm tiêu đề. Tuy nhiên, tôi muốn tự động tạo tiêu đề bằng tùy chọn asis, nhưng sau đó trong cùng một đoạn mã chèn một số đồ họa.Chèn tiêu đề và âm mưu theo chương trình trong cùng một đoạn mã với đánh dấu R bằng cách sử dụng kết quả = 'asis'

Câu trả lời liên quan nhất mà tôi có thể tìm thấy ở đây là: Programmatically insert text, headers and lists with R markdown, nhưng câu trả lời cho câu hỏi này không cho phép cả tiêu đề động và lô trong các tiêu đề động đó.

Dưới đây là một ví dụ đơn giản tái sản xuất sau chứng minh những gì tôi có thể và không thể đạt được với results = 'asis'

Mã này trực tiếp dưới đây không những gì tôi mong đợi, tạo ra một tiêu đề cho mỗi loài.

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

Mã bên dưới đây không làm những gì tôi muốn. Lý tưởng nhất, mã trực tiếp dưới đây sẽ tạo ra một tiêu đề cho mỗi loài với một âm mưu bên dưới mỗi tiêu đề. Thay vào đó, nó tạo ra tiêu đề setosa duy nhất trong tệp đầu ra theo sau là ba ô.

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

Có cách nào để tạo động 3 tiêu đề với cốt truyện trong mỗi tiêu đề không?

Trả lời

11

Bạn cần phải thêm một số dòng mới sau khi âm mưu và trước các tiêu đề, sử dụng 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') 
} 
Các vấn đề liên quan