【发布时间】:2016-02-03 15:17:08
【问题描述】:
问题
有没有办法在闪亮的应用程序中插入(和评估)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)
和“RMarkdownFile.rmd”在同一个文件夹中:
This is a text
$$ E(x) = 0 $$
```{r, eval = T}
plot(rnorm(100))
```
结果:
目标
具体来说,我想获得代码块的评估(绘制一些东西...),并且我想获得渲染的数学方程式。
有什么想法吗?
编辑解决方案
感谢@Bunk 的输入,我选择使用命令knit 将所有rmd 文件渲染为md 文件,然后在闪亮的应用程序中包含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)
【问题讨论】:
-
您的解决方案更适合我。您介意将其发布为正确答案吗?
-
当然,见下文。
标签: r shiny r-markdown knitr