如何根据列表在 R 中制作幻灯片?
How to make slide deck in R based on a list?
我在 R 方面有一定的经验。我正在尝试制作用于远程学习的抽认卡幻灯片。我需要在我的屏幕上显示幻灯片供我的学生阅读,并快速浏览它们。
我有一个大约 4,000 个单词的列表,分为不同的类别。我希望能够过滤类别,并构建一个幻灯片组,每张幻灯片都有一个词。
天上掉馅饼的目标将是一个 Shiny 应用程序,其中包含 select 类别的下拉列表,然后 selection select 的复选框将哪些词包含在幻灯片中,然后生成 html 个幻灯片。
下面是我使用的单词列表的示例:
词类 |词 |指数
做空 CVC |禁止 | 1
做空 CVC |蝙蝠 | 1
做空 CVC |可以 | 1
我建议您首先使用 Slidy
或其他一些 HTML 演示文稿格式输出制作 R Markdown 文档。只需在其中包含一两张幻灯片,然后播放直到格式正确。
然后编写一个 R 函数,将 header 和所需数量的幻灯片输出到一个文件,然后对该文件调用 rmarkdown::render()
。您的 R 函数可以将所有特征作为输入,例如您最终将放入 Slidy 应用程序的 Category
。
为了帮助您入门,这里有一个 two-slide 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行是header;之后,幻灯片以 ##
标记开始。如果您想对其进行自定义,请参阅 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
,其中将包含您的幻灯片。
我在 R 方面有一定的经验。我正在尝试制作用于远程学习的抽认卡幻灯片。我需要在我的屏幕上显示幻灯片供我的学生阅读,并快速浏览它们。
我有一个大约 4,000 个单词的列表,分为不同的类别。我希望能够过滤类别,并构建一个幻灯片组,每张幻灯片都有一个词。
天上掉馅饼的目标将是一个 Shiny 应用程序,其中包含 select 类别的下拉列表,然后 selection select 的复选框将哪些词包含在幻灯片中,然后生成 html 个幻灯片。
下面是我使用的单词列表的示例:
词类 |词 |指数
做空 CVC |禁止 | 1
做空 CVC |蝙蝠 | 1
做空 CVC |可以 | 1
我建议您首先使用 Slidy
或其他一些 HTML 演示文稿格式输出制作 R Markdown 文档。只需在其中包含一两张幻灯片,然后播放直到格式正确。
然后编写一个 R 函数,将 header 和所需数量的幻灯片输出到一个文件,然后对该文件调用 rmarkdown::render()
。您的 R 函数可以将所有特征作为输入,例如您最终将放入 Slidy 应用程序的 Category
。
为了帮助您入门,这里有一个 two-slide 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行是header;之后,幻灯片以 ##
标记开始。如果您想对其进行自定义,请参阅 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
,其中将包含您的幻灯片。