Consider this simple example:
---
title: "Untitled"
output: ioslides_presentation
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
## Slide with R Output
```{r t, warning=FALSE, message=FALSE}
library(knitr)
library(kableExtra)
library(dplyr)
for(threshold in c(20, 25)) {
cars %>%
filter(dist < threshold) %>%
kable('html') %>%
kable_styling(bootstrap_options = "striped")
}
```
Here I simply want to print each output of the for loop
into a different slide. In this example, there are two calls to kable
that should go on two different slides.
The code above does not work. Am I even using the right packages for that? Any ideas?
Thanks!
You can use the
asis
option:Here's the start of a solution. You can print strings with markdown, either by making the strings yourself or using
pander
'spandoc.*
functions. If you setresults="asis"
for that chunk, it will get compiled the same as any other markdown. I usedcat
to make the##
headings, but commented out twopander
functions that you could try also to make headers or horizontal rules to split slides.There's more detail on the
pander
functions here, plus other SO questions such as this one.One issue is that when I knit this, I'm not getting the striped table that you'd expect. If I add a slide before this chunk and put a table in it with these
kableExtra
settings, I do get stripes, but the first table is also pretty ugly...I'm not sure if that's a bug or conflicting CSS somewhere or what.To get rid of that bogus table, you can try to put
options(kableExtra.html.bsTable = T)
in your setup section.