闪亮应用中的RMarkdown

Dav*_*vid 26 r knitr r-markdown shiny

问题

有没有办法在闪亮的应用程序中插入(并评估)RMarkdown脚本.(注意,我不是在寻找在此处解释的RMarkdown中的闪亮应用程序,也不是在寻找闪亮的Markdown脚本(请参阅Shiny Gallery Markdown))

我正在构建一个包含文本,方程,代码块,图和交互元素的应用程序.为方便起见,我使用Markdown文件作为文本和方程式,并希望有时在两者之间(即在RMarkdown中写入大部分内容).由于闪亮的应用程序更复杂(我使用它shinydashboard包括许多独特的功能),我宁愿选择不使用第一个链接中描述的方法.

最小的工作示例是:

R-文件:

library(shiny)

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

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

和"RMarkdownFile.rmd"在同一个文件夹中:

This is a text

$$ E(x) = 0 $$ 

```{r, eval = T}
plot(rnorm(100))
```
Run Code Online (Sandbox Code Playgroud)

结果:

闪亮的应用程序

目标

如果我编织rmd-file,我想要的是输出: RMarkdown HTML页面

具体来说,我想得到代码块的评估(绘制一些东西......),我想得到渲染的数学方程式.

有任何想法吗?

编辑解决方案

感谢@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)
Run Code Online (Sandbox Code Playgroud)

pic*_*ick 19

我认为编织它并渲染UI应该可行.

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)
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 6

按照@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)
Run Code Online (Sandbox Code Playgroud)

  • 迟到总比不到好; 完毕! (2认同)