gpt4 book ai didi

r - 如何将 'learnr' 中的教程问题嵌入到完整的 Shiny 应用程序中?

转载 作者:行者123 更新时间:2023-12-02 17:50:35 26 4
gpt4 key购买 nike

我正在尝试将 learnr 包中的教程 Rmd 嵌入到一个完整的 Shiny 应用程序中。但是,学习者使用 shiny_prerendered 运行时,我无法在我的应用程序中调用它。如何在我的 Shiny 应用程序中运行交互式教程?

我现在有三个文件:ui.R、server.R 和tutorial.Rmd。

我的教程如下所示(为了格式化而删除了一个`)

---
title: "my tutorial"
tutorial:
id: "com.example.tutorials.a-tutorial"
version: 1.0
output: learnr::tutorial
runtime: shiny_prerendered
---

``{r setup, include=FALSE}
library(learnr)
knitr::opts_chunk$set(echo = FALSE)
``

### Exercise Example
An R code question
``{r add-function, exercise=TRUE, exercise.lines = 5}
add <- function() {

}
``

### Quiz
R Quiz Question
``{r quiz}
quiz(
question("Question 1",
answer("wrong"),
answer("also wrong"),
answer("right", correct = TRUE),
answer("wrong again")
)
)
``

当我尝试从 ui.R 渲染此文件的输出时,如下所示:

ui <- tagList(
fluidPage(theme = shinytheme("cosmo")),
navbarPage(
"appTitle",
tabPanel("Embedding Tutorials?",
includeMarkdown("tutorial.Rmd")
),
)
)

它(我认为正确)将其显示为常规的旧 Rmd 文件,而不是交互式教程。

我还尝试使用 rmarkdown::render("tutorial.Rmd") 它只是将文件路径渲染到 Rmd 生成的 html 文件 (/Users/me/app/tutorial.html)。

当我尝试使用 run_tutorial("hello", package="learnr") 呈现任何教程时,它(再次正确地)给出了错误错误:无法从runApp()内部调用runApp()。如果您的应用程序代码包含runApp(),请将其删除。

我已经发现我可以使用 learnr 中的 question() 函数创建问题 block ,方法如下:

ui <- tagList(
fluidPage(theme = shinytheme("cosmo")),
navbarPage(
"appTitle",
tabPanel("Tutorial",
quiz(
question("Quiz question",
answer("1"),
answer("2"),
answer("3", correct = TRUE),
answer("4"),
allow_retry = TRUE
)
),
)
)

但这不允许创建可在应用程序内运行的 R 代码块的功能。

我想要的是一个完全交互式的学习者教程,可以从 ui.R 文件中呈现一个 Shiny 的应用程序。这可能吗?

最佳答案

以及我将您的额外 Material 纳入 learnr 的建议教程我也得到了<iframe>嵌入工作。创建 app.R包含以下内容:

#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com/
#

library(shiny)

# Define UI for application that draws a histogram
ui <- fluidPage(

# Application title
titlePanel("learnr tutorial"),

# Show a plot of the generated distribution
mainPanel(fluidRow(
htmlOutput("frame")
))
)

# Define server logic required to draw a histogram
server <- function(input, output) {

output$frame <- renderUI({
tags$iframe(
src="https://jjallaire.shinyapps.io/learnr-tutorial-03a-data-manip-filter/", width=1280, height=720
)
})
}

# Run the application
shinyApp(ui = ui, server = server)

现在当你 Run App这应该嵌入 https://rstudio.github.io/learnr/ 中的示例教程

该教程似乎有必要渲染并发布到shinyapps.io等:我无法仅从渲染的html中让它工作。文件。所以,

  1. 创建教程
  2. 发布教程
  3. 嵌入教程

似乎是前进的方向。

关于r - 如何将 'learnr' 中的教程问题嵌入到完整的 Shiny 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55596637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com