有没有办法在闪亮的应用程序中插入(并评估)RMarkdown脚本。 (注意,我不是在RMarkdown中寻找一个解释为here的闪亮应用程序,也不是在寻找有光泽的Markdown脚本(see Shiny Gallery Markdown))
我正在构建一个包含文本,方程式,代码块,图和交互元素的应用程序。为方便起见,我使用Markdown文件作为文本和方程式,并希望有时在两者之间绘图(即在RMarkdown中写入大部分内容)。由于闪亮的应用程序更复杂(我使用shinydashboard
包括许多独特的功能),我宁愿使用不使用first link中描述的方法的选项。
最低工作示例是:
R-文件:
library(shiny)
ui <- shinyUI(
fluidPage(
includeMarkdown("RMarkdownFile.rmd")
)
)
server <- function(input, output) {}
shinyApp(ui, server)
和&#34; RMarkdownFile.rmd&#34;在同一个文件夹中:
This is a text
$$ E(x) = 0 $$
```{r, eval = T}
plot(rnorm(100))
```
具体来说,我想得到代码块的评估(绘制一些东西......),我想得到渲染的数学方程式。
有什么想法吗?
感谢@Bunk的输入,我选择使用命令rmd
将所有md
文件呈现给knit
文件,然后将md
个文件包含在闪亮的文件中app(我使用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)
答案 0 :(得分: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)
答案 1 :(得分:4)
按照@ 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)