闪亮应用程序中的 RMarkdown
RMarkdown in Shiny Application
问题
有没有办法在闪亮的应用程序中插入(和评估)RMarkdown 脚本。 (请注意,我不是在 RMarkdown 中寻找闪亮的应用程序 here, nor am I looking for Markdown scripts in shiny (see Shiny Gallery Markdown))
我正在构建一个包含文本、方程式、代码块、绘图和交互元素的应用程序。为了方便起见,我将 Markdown 文件用于文本和方程式,并且有时希望在两者之间有一个绘图(即在 RMarkdown 中编写大部分内容)。由于 shiny-app 更复杂(我使用 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))
```
结果:
目标
我想要的是编织 rmd
文件时的输出:
具体来说,我想要获得代码块的评估(绘制一些东西...),并且我想要获得呈现的数学方程式。
有什么想法吗?
已编辑解决方案
感谢@Bunk 的帮助,我选择了使用命令knit
将所有rmd
个文件渲染为md
个文件,然后将md
个文件包含在闪亮的应用程序(我使用降价而不是 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)
我认为编织它并渲染一个 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)
根据@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)
问题
有没有办法在闪亮的应用程序中插入(和评估)RMarkdown 脚本。 (请注意,我不是在 RMarkdown 中寻找闪亮的应用程序 here, nor am I looking for Markdown scripts in shiny (see Shiny Gallery Markdown))
我正在构建一个包含文本、方程式、代码块、绘图和交互元素的应用程序。为了方便起见,我将 Markdown 文件用于文本和方程式,并且有时希望在两者之间有一个绘图(即在 RMarkdown 中编写大部分内容)。由于 shiny-app 更复杂(我使用 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))
```
结果:
目标
我想要的是编织 rmd
文件时的输出:
具体来说,我想要获得代码块的评估(绘制一些东西...),并且我想要获得呈现的数学方程式。
有什么想法吗?
已编辑解决方案
感谢@Bunk 的帮助,我选择了使用命令knit
将所有rmd
个文件渲染为md
个文件,然后将md
个文件包含在闪亮的应用程序(我使用降价而不是 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)
我认为编织它并渲染一个 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)
根据@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)