【问题标题】:Placing markdown within shinydashboard box compresses page在闪亮的仪表板框中放置降价会压缩页面
【发布时间】:2017-01-14 09:29:29
【问题描述】:

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

ui.R

library(shinydashboard)

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

服务器.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

这将创建以下内容:

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

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

我明白了:

我期望的视图。

有什么方法可以避免这种页面压缩,或者有没有其他方法可以在闪亮的仪表板框中部署 markdown 文本?

【问题讨论】:

    标签: r shiny r-markdown shinydashboard


    【解决方案1】:

    我也用过 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)
    

    【讨论】:

    • 感谢您 - 它运行良好!实际上,我正要回答我自己的问题——我发现includeMarkdown('mymarkdown.Rmd') 可以工作并且非常干净(尽管似乎在任何地方都没有很好地记录这一点)。如果您想编辑自己的答案(或者不介意我这样做) - 我很乐意将其标记为已接受。
    • 是的,includeMarkdown 确实有效,但它不编织 rmd 文件。见stackoverflow.com/questions/39171890。所以它适用于简单的文本,但不会执行 R 代码。
    【解决方案2】:

    markdown::markdownToHTML 可以选择只创建一个 HTML 片段。它省略了 HTML 标题和样式。像这样,Shiny 网站样式没有损坏。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 2018-04-30
      • 2015-04-22
      • 1970-01-01
      • 2018-01-24
      • 2021-09-05
      • 1970-01-01
      • 2018-05-30
      相关资源
      最近更新 更多