在 shinydashboard 框内放置 markdown 压缩页面

Placing markdown within shinydashboard box compresses page

我正在尝试将 markdown 嵌入到 shinydashboard 框中,以便稍后部署到 shiny 服务器上。使用解决方案 ,我创建了以下内容:

ui.R

library(shinydashboard)

dashboardPage(
   dashboardHeader(title = "xxx"),
   dashboardSidebar(),
   dashboardBody(
     column(
       box(
         title = "BoxTest",
         uiOutput('mymarkdown'),
         width = NULL
       ),
       width = 8)
  )
)

server.R

library(shiny)
library(knitr)
shinyServer(function(input, output) {

  output$mymarkdown <- renderUI(HTML(markdown::markdownToHTML(knit("mymarkdown.Rmd", quiet = TRUE))))

})

mymarkdown.Rmd

## R Markdown

Test Test Test

这将创建以下内容:

如果我切换到非 markdown 实现,例如:

output$mymarkdown <- renderUI(h4("Test Test Test"))

我得到:

我期望的视图。

有什么方法可以避免这种页面压缩,或者有其他方法可以在 shinydashboard 框中部署降价文本吗?

我也在 shiny 中使用了 markdown,但是使用了 rmarkdown 和 includeHTML

library(shinydashboard)
library(shiny)
library(knitr)
library(rmarkdown) 

ui <- dashboardPage(
  dashboardHeader(title = "xxx"),
  dashboardSidebar(),
  dashboardBody(
    column(
      box(
        title = "BoxTest",
         uiOutput('mymarkdown'),
        width = NULL
      ),
      width = 8)
  )
)   
server <- shinyServer(function(input, output) { 
    output$mymarkdown <- renderUI({  
         rmarkdown::render(input = "mymarkdown.Rmd",
                           output_format = html_document(self_contained = TRUE),
                           output_file = 'mymarkdown.html')  
         shiny::includeHTML('mymarkdown.html') 
                            }) 
} ) 
shinyApp(ui, server)

markdown::markdownToHTML 有一个选项可以只创建一个 HTML 片段。它省略了 HTML header 和样式。像这样,闪亮的网站样式没有损坏。

output$mymarkdown <- renderUI({  
    k <- knitr::knit(input = "mymarkdown.Rmd", quiet = T)
    HTML(markdown::markdownToHTML(k, fragment.only = T))
})