RMarkdown в блестящем приложении

Проблема

Есть ли способ вставить (и оценить) RMarkdown script в блестящем приложении. (Заметьте, я не ищу блестящее приложение в RMarkdown, которое объясняется здесь, и я не ищу скрипты Markdown в блестящем (см. Shiny Gallery Markdown))

Я создаю приложение с текстом, уравнениями, кодовыми фрагментами, графиками и интерактивными элементами. Для удобства я использую файлы Markdown для текста и уравнений и хотел бы иметь сюжет иногда между ними (т.е. Писать большинство вещей в RMarkdown). Поскольку блестящее приложение более сложное (я использую shinydashboard, включая многие его уникальные функции), я бы предпочел вариант, который не использует подход, описанный в первая ссылка.

Минимальным рабочим примером будет:

R файл:

library(shiny)

ui <- shinyUI(
  fluidPage(
    includeMarkdown("RMarkdownFile.rmd")
  )
)
server <- function(input, output) {}

shinyApp(ui, server)

и "RMarkdownFile.rmd" в той же папке:

This is a text

$$ E(x) = 0 $$ 

```{r, eval = T}
plot(rnorm(100))
```

Результат:

Блестящее приложение

Target

То, что я хочу иметь, - это выход, если я вяжу файл rmd: HTML-страница RMarkdown

В частности, я хочу получить оценку фрагментов кода (заговорить что-то...), и я хочу получить отображаемые математические уравнения.

Любые идеи?

Отредактированное решение

Благодаря вводу @Bunk я решил отобразить все rmd файлы в md файлы с помощью команды knit, а затем включить файлы md в блестящее приложение (я использую markdown вместо html поскольку последние порождали некоторые проблемы с уравнениями). Наконец, includeMarkdown завернут в withMathJax, чтобы обеспечить правильное отображение уравнений.

Окончательный код выглядит следующим образом:

library(shiny)
library(knitr)

rmdfiles <- c("RMarkdownFile.rmd")
sapply(rmdfiles, knit, quiet = T)

ui <- shinyUI(
    fluidPage(
        withMathJax(includeMarkdown("RMarkdownFile.md"))
  )
)
server <- function(input, output) { }

shinyApp(ui, server)

Ответы

Ответ 1

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

library(shiny)
library(knitr)

ui <- shinyUI(
    fluidPage(
        uiOutput('markdown')
  )
)
server <- function(input, output) {
    output$markdown <- renderUI({
        HTML(markdown::markdownToHTML(knit('RMarkdownFile.rmd', quiet = TRUE)))
    })
}

shinyApp(ui, server)

Ответ 2

В соответствии с запросом @elevendollar, это то, что я в итоге использовал:

library(shiny)
library(knitr)

rmdfiles <- c("RMarkdownFile.rmd")
sapply(rmdfiles, knit, quiet = T)

ui <- shinyUI(
    fluidPage(
        withMathJax(includeMarkdown("RMarkdownFile.md"))
  )
)
server <- function(input, output) { }

shinyApp(ui, server)