Я бы посоветовал для первого прохода создать документ R Markdown с выводом Slidy
или другим форматом представления HTML. Просто включите в него один или два слайда и играйте с ним, пока формат не будет выглядеть правильно.
Затем напишите функцию R, которая выводит заголовок и столько слайдов, сколько требуется для файла, затем вызывает rmarkdown::render()
на этот файл. Ваша функция R может принимать в качестве входных данных все характеристики, такие как Category
, которые вы в конечном итоге добавите в приложение Slidy.
Для начала, вот презентация Slidy
с двумя слайдами:
---
output: slidy_presentation
---
##
<div style="font-size:300%;position:absolute;top:50%;left:50%;transform: translate(-50%,-50%)">
ban
</div>
##
<div style="font-size:300%;position:absolute;top:50%;left:50%;transform: translate(-50%,-50%)">
bat
</div>
Первые 3 строки являются заголовком; после этого слайды начинаются с маркера ##
. См. Документацию Slidy
, если вы хотите настроить ее.
После того, как вы настроили эту функцию из своей функции R, вы можете написать приложение Shiny, которое предлагает выбор в меню, а затем вызвать эту функцию.
Отредактировано, чтобы добавить: по разным причинам оказывается, что xaringan
не очень подходит для этого, поэтому я переключил все на Slidy
. Приведенная ниже функция использует Slidy.
makeSlideDeck <- function(words, outfile = "slides.html") {
header <- '---
output: slidy_presentation
---'
slide <- '##
<div style="font-size:300%;position:absolute;top:50%;left:50%;transform: translate(-50%,-50%)">
WORD
</div>'
lines <- character(length(words) + 1)
lines[1] <- header
for (i in seq_along(words))
lines[i + 1] <- sub("WORD", words[i], slide, fixed = TRUE)
filename <- paste0(tools::file_path_sans_ext(outfile), ".Rmd")
writeLines(lines, filename)
rmarkdown::render(filename)
}
Запустите его так:
dat <- c("ban","bat","can")
makeSlideDeck(dat)
Он выдаст slides.Rmd
и обработает его в slides.html
, который будет содержать ваши слайды.