【问题标题】:.Rmd output after created in a tabItem creates a second dashboard in the body of all tabItems of the shiny dashboard在 tabItem 中创建后的 .Rmd 输出在闪亮仪表板的所有 tabItems 的正文中创建第二个仪表板
【发布时间】:2020-12-01 00:07:47
【问题描述】:

我有一个带有 3 个 tabItems 的闪亮仪表板。在名为Results 的第三个文件中显示了一个rmd 文件。问题是,一旦我打开此选项卡并显示 rmd 报告,其他选项卡中的正文就被破坏了,就像第二个仪表板包含在主体中一样。知道为什么会这样吗?

ex.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)

和 app.r 文件

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyjs)
library(knitr)
dbHeader <- dashboardHeaderPlus(

)

shinyApp(
  ui = dashboardPagePlus(
    header = dbHeader,
    sidebar = dashboardSidebar(
                               sidebarMenu(id = "sidebar", # id important for updateTabItems
                                           menuItem("Welcome", tabName = "well", icon = icon("house")),
                                           menuItem("Consent", tabName = "conse", icon = icon("line-chart")),
                                           menuItem("Results", tabName = "res", icon = icon("line-chart"))
                               )           ),
    body = dashboardBody(
      
      useShinyjs(),
      tags$script(HTML("$('body').addClass('fixed');")),
      
      tags$head(tags$style(".skin-blue .main-header .logo { padding: 0px;}")),
      tabItems(
        tabItem("well",
                fluidRow(
                  column(5,),
                  column(6,
                         actionButton("button", "Get started",style='padding:4px; font-size:140%')))),
        tabItem("conse",
                fluidRow(column(3,h3("Concent"))),
                fluidRow(column(3,h5(strong("Purpose of the research")))),
                fluidRow(column(12,"Your practice is being invited to participate in a study which aims to explore the relationship of statin prescriptions and all cause mortality in elderly general practice patients")),
                
                
        ),
        tabItem("res",
                tags$hr(),
                fluidRow(
                  column(3,actionButton('spdf', "Save PDF",style='padding:4px; font-size:180%')
                  ),
                  column(6,
                         uiOutput('markdown'))))
      ),
      
      
      
    )
    
  ),
  server<-shinyServer(function(input, output,session) { 
    output$markdown <- renderUI({
      HTML(markdown::markdownToHTML(knit('ex.rmd', quiet = TRUE)))
    })

  }
  )
)

【问题讨论】:

    标签: r shiny markdown shinydashboard


    【解决方案1】:

    rmd 代码添加属性

    max-width: 800px;

    要删除它,您可以使用 fragment.only 选项

    HTML(markdown::markdownToHTML(knit('exx.rmd', quiet = TRUE), fragment.only=TRUE))
    

    或者,您可以将以下内容添加到您的ui

    tags$head(tags$style(HTML("
                                   body {
                                      width: 100% !important;
                                      max-width: 100% !important;
                                   }
    
                                   ")))
    

    那么对前面的标签就没有影响了。

    【讨论】:

    • 感谢您的建议,但我如何才能仅在第三个选项卡 (rmd) 中保持此 A4 纸张宽度,同时在其他 2 个选项卡中保持 100% 宽度?
    • fragment.only=TRUE 选项不起作用?
    • 它正在工作,但我想知道我是否可以在不使用 fragment=T 的情况下创建的特定选项卡中保留这些 A4 限制
    • 我没试过。或许你可以看看here
    猜你喜欢
    • 1970-01-01
    • 2021-03-07
    • 2015-04-22
    • 2016-12-19
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 2017-07-31
    相关资源
    最近更新 更多