3

learnrパッケージから完全な光沢のあるアプリにチュートリアル Rmd を埋め込もうとしています。ただし、学習者はshiny_prerenderedランタイムを使用するため、アプリ内で呼び出すことはできません。光沢のあるアプリ内でインタラクティブなチュートリアルを実行するにはどうすればよいですか?

現在、ui.R、server.R、tutorial.Rmd の 3 つのファイルがあります。

私のチュートリアルは次のようになります (書式設定のために ` を 1 つ削除)

---
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

を使用してチュートリアルをレンダリングしようとすると、(当然のことながら) runApp() runApp() runApp ()run_tutorial("hello", package="learnr")エラーが発生します ERROR: Can't callfrom within. If your application code contains, please remove it.

次のquestion()関数を使用して質問チャンクを作成できることをすでに発見しました。learnr

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、光沢のあるアプリのファイル内からレンダリングできる、完全にインタラクティブな学習者向けチュートリアルです。これは可能ですか?

4

2 に答える 2