Как сделать слайд-колоду в R на основе списка? - PullRequest
0 голосов
/ 07 апреля 2020

У меня небольшой опыт в R. Я пытаюсь сделать слайды с помощью карточек для дистанционного обучения. Мне нужно показать слайды на моем экране, чтобы мой студент мог их прочитать, и быстро пролистать их.

У меня есть список из примерно 4000 слов, разбитых на разные категории. Я хочу иметь возможность фильтрации по категории и создать колоду слайдов, в которой по одному слову на каждом слайде.

Целью p ie in-the-sky будет приложение Shiny, с раскрывающийся список, чтобы выбрать категорию, затем флажок, чтобы выбрать, какие слова включить в слайд-слайд, а затем создать слайд-слайд html.

Ниже приведен пример списка слов. используя:

Слово Категория | слово | index


Короткое резюме C | запрет | 1

Короткое резюме C | летучая мышь | 1

Короткое резюме C | может | 1

1 Ответ

0 голосов
/ 07 апреля 2020

Я бы посоветовал для первого прохода создать документ 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, который будет содержать ваши слайды.

...