<- iris |> as_tibble() |> janitor::clean_names()
data
<- data |>
out group_nest(species) |>
deframe()
<- out |>
out map(\(data) {
ggplot(data, aes(x = sepal_length, y = sepal_width)) +
geom_point()
})
When working with a list of objects, it may be useful to organize the objects into tabs instead of a huge list of individual objects
Using the iris
dataset as a working example, I generate a list of ggplot objects.
The list of ggplot2 objects can be called and presented as below
out
$setosa
$versicolor
$virginica
Instead of presenting a long list of plots, we can organize the plots into individual tabs. In order to do this, we utilize a combination of imap_chr()
and knit_child()
. We use imap_chr()
to pass on individual plots into knit_child()
. We wrap this chunk within a fenced div panel-tabset
, and utilize results: asis
.
```{r}
#| eval: false
out <- imap_chr(out, \(out, title) {
text <- glue::glue("## `r title`",
"```{r}",
"out",
"```",
"", .sep = '\n\n')
knitr::knit_child(text = text, envir = environment(),
quiet = T)
})
cat(out, sep = '\n')
```
out
out
out
Reuse
Citation
BibTeX citation:
@online{luu2023,
author = {Luu, Michael},
title = {Programatically Generate {Quarto} Tabs},
date = {2023-04-13},
langid = {en}
}
For attribution, please cite this work as:
Luu, Michael. 2023. “Programatically Generate Quarto Tabs.”
April 13, 2023.