在Shiny应用程序中呈现来自R Markdown的HTML输出

8
我正在尝试使用r markdown生成一个用于演示的HTML文档。当我使用standalone方式时,这似乎运行良好。但是当我在shiny应用程序中使用它时,它似乎不起作用。到目前为止,我已经在UI中使用了以下内容: includeHTML("mkslides.html") 在服务器端使用以下代码呈现markdown。 out <- render('mkslides.Rmd') 当我加载shiny应用程序时,在控制台上看到markdown已呈现。但是我只看到HTML文件而没有所需的css和js。我该如何解决这个问题?

似乎将闪亮代码包含在.Rmd文件中更为常见。我认为这个是一个很好的例子,并且该过程在这里这里有更详细的说明。 - Felix T.
2个回答

16

我不确定你的目标是什么,因此我将尝试解决上述两个问题。

  1. ShinyApp中呈现HTML文档

这很简单,您只需要在UI.R部分的includeHTML中使用,无需服务器端组件。

http://shiny.rstudio.com/gallery/including-html-text-and-markdown-files.html

注意: includeHTML不会呈现您的*.Rmd文件。

  1. ShinyApp中呈现.Rmd文件

这需要使用knitmarkdownToHTML,请参见以下线程。

RMarkdown in Shiny Application


代码示例

示例.Rmd文件

---
title: "An example Knitr/R Markdown document"
output: html_document
---


{r chunk_name, include=FALSE}
x <- rnorm(100)
y <- 2*x + rnorm(100)
cor(x, y)
{r scatterplot, fig.width=8, fig.height=6}
plot(x,y)

另存为:test_presentation.Rmd,并使用knit生成test_presentation.html

1.在Shiny中包含HTML文件

library(shiny)

ui <- shinyUI(
  fluidPage(
    includeHTML('test_presentation.html')
  )
)
server <- function(input, output) {
}

shinyApp(ui, server)

2. 在Shiny中渲染上述的*.Rmd文件

代码来自:https://dev59.com/hFwX5IYBdhLWcg3wtBMa#33500524

library(shiny)
library(knitr)

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

shinyApp(ui, server)

0

我的理解是Markdown包基于(已弃用的)Sundown渲染库。特别地,它似乎不支持grid_tables扩展。这里有一个基于rmarkdown::render的解决方案,更接近于通过在RStudio Desktop中点击“Knit to HTML”时呈现的内容。我只希望它不会创建和读取磁盘上的文件。

library(shiny)
library(knitr)

ui <- shinyUI(
  fluidPage(
    uiOutput('markdown')
  )
)

server <- function(input, output) {
  output$markdown <- renderUI({
      withMathJax(HTML(readLines(rmarkdown::render(input = "test_presentation.rmd",
                                                   output_format = rmarkdown::html_fragment(),
                                                   quiet = TRUE
                                                   ))))
   })
}

shinyApp(ui, server)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接