динамические вкладки с несколькими участками - PullRequest
0 голосов
/ 23 ноября 2018

Мне удалось создать HTML-документ, который создает динамические вкладки на основе списка элементов.Добавление одного графика отлично работает на одном вкладке.Как я могу добавить несколько графиков на одном наборе вкладок?

Таким образом, код, с которого я начал, но показывает только 1 график на вкладку, когда вы связываете документ с выводом html.очевидно, что-то все еще не хватает.

---
title: "R Notebook"
output:
  html_document:
    df_print: paged
editor_options:
  chunk_output_type: inline
---


### header 1
```{r}
library(ggplot2)
df <- mtcars

pl_list <- list()

pl1 <- qplot(cyl, disp, data = df[1:12,])
pl2 <- qplot(mpg, cyl, data = df[13:20,])
pl3 <- qplot(mpg, cyl, data = df[21:30,])
pl4 <- qplot(mpg, cyl, data = df[1:12,])

pl_list[[1]] <- list(pl1, pl3,  "one")
pl_list[[2]] <- list(pl2, pl4,  "two")
```


### header {.tabset}
```{r, results = 'asis', echo = FALSE}

for (i in seq_along(pl_list)){
  tmp <- pl_list[[i]]
  cat("####", tmp[[3]], " \n")
  print(tmp[1])
  cat(" \n\n")
  }
```

1 Ответ

0 голосов
/ 23 ноября 2018

Есть несколько улучшений, которые вы можете сделать.

  1. Создать cat функцию заголовка с аргументами для текста и уровня.

С ней вы не сможетенужно несколько раз позвонить cat, и он автоматически разыскивает #.

catHeader <- function(text = "", level = 3) {
    cat(paste0("\n\n", 
               paste(rep("#", level), collapse = ""), 
               " ", text, "\n"))
}
print графики с использованием lapply.

Полный код выглядит следующим образом:

---
title: "R Notebook"
output:
  html_document:
    df_print: paged
editor_options:
  chunk_output_type: inline
---


```{r, functions}
catHeader <- function(text = "", level = 3) {
    cat(paste0("\n\n", 
               paste(rep("#", level), collapse = ""), 
               " ", text, "\n"))
}
```

### header 1

```{r}
library(ggplot2)
df <- mtcars

pl_list <- list()

pl1 <- qplot(cyl, disp, data = df[1:12,])
pl2 <- qplot(mpg, cyl, data = df[13:20,])
pl3 <- qplot(mpg, cyl, data = df[21:30,])
pl4 <- qplot(mpg, cyl, data = df[1:12,])

pl_list[[1]] <- list(pl1, pl3,  "one")
pl_list[[2]] <- list(pl2, pl4,  "two")
```


## header {.tabset}

```{r, results = "asis", echo = FALSE}

for(i in seq_along(pl_list)){
    tmp <- pl_list[[i]]
    # As you want to use tabset level here has to be lower than 
    # parent level (ie, parent is 2, so here you have to use 3)
    catHeader(tmp[[3]], 3)
    lapply(tmp[1:2], print)
}
```
...