如何将menuSubItem与tabPanel相关联

时间:2019-06-04 15:01:29

标签: dashboard shinydashboard

我有这个应用程序

   library(shinydashboard)
library(dplyr)
library(shiny)

mtcars$cyl <- as.factor(mtcars$cyl)

ui <- dashboardPage(
  dashboardHeader(title = "Simple Dashboard"),
  ## Sidebar content
  dashboardSidebar(sidebarMenu(
    menuItem("Widgets", tabName = "widgets", icon = icon("th")),
    menuSubItem("Sub-menu1", icon = icon("dashboard")),
    menuSubItem("Sub-menu2", icon = icon("dashboard"))
  )),
  ## Body content
  dashboardBody(tabItems(
    # First tab content
    tabItem(tabName = "widgets",
            fluidRow(DT::dataTableOutput('items_dt')))
  ))
)

server <- function(input, output) {
  set.seed(122)
  histdata <- rnorm(500)

  output$plot1 <- renderPlot({
    data <- histdata[seq_len(input$slider)]
    hist(data)
  })

  output$items_dt = DT::renderDataTable(
    Patient_005,
    filter = 'bottom',
    options = list(scrollX = TRUE)
  )
}

shinyApp(ui, server)

我也有两个这样的数据表

Patient_005=as.data.frame(read.table(text = "   Driver  SNV_Tumour_005  SNV_Organoid_005    INDEL_Tumour_005    INDEL_Organoid_005  Deletion_Organoid_005
                                     ABCB1   *   *   *   -   -   -
                                     ACVR1B  *   *   -   -   -   -
                                     ACVR2A  *   -   -   -   -   -

                                     "))

Patient_013=as.data.frame(read.table(text = "   Driver  SNV_Tumour_013  SNV_Organoid_013    INDEL_Tumour_013    INDEL_Organoid_013  Deletion_Tumour_013 Deletion_Organoid_013
                                     ABCB1   *   -   *   -   -   -   -
                                     ACVR1B  *   -   -   -   -   -   -
                                     ACVR2A  *   -   -   -   -   -   -

                                     "))

我想在Patient_005中有Sub-menu1,在Patient_013中有Sub-menu2 但一般情况下,只有Patient_005会在任何地方显示,而我需要在不同的子菜单中使用不同的患者

请帮忙吗?

非常感谢您提前提供帮助

1 个答案:

答案 0 :(得分:1)

library(shinydashboard)
library(rAmCharts)
library(plyr)
library(rAmCharts)
library(DT)
library(shiny)
library(shinyBS)
library(highcharter)
library(nycflights13)
library(htmltools)
library(purrr)
library(dbplyr)
library(dplyr)
library(nycflights13)
library(ggplot2)
library(pool)
library(DBI)
library(BBmisc)
library(colourpicker)
library(UpSetR)
library(plyr)
library(gridExtra)
library(d3heatmap)
library(corrplot)
library(Vennerable)
library(wordcloud)
library(nycflights13)
library(shinyHeatmaply)
library(heatmaply)


ui <- dashboardPage(skin = 'yellow',
                    dashboardHeader(
                                    tags$li(a(href = 'https://www.southampton.ac.uk/medicine/about/staff/tju.page#_ga=2.14695670.1710730763.1560178233-40818463.1486652937',
                                              icon("list-alt"),
                                              title = "Back to Apps Home"),
                                            class = "dropdown"),
                                    tags$li(a(href = 'https://www.southampton.ac.uk/cruk',
                                              img(src = 'https://tse3.mm.bing.net/th?id=OIP.oQOheFA4xY7SFZ5lyJi1nQHaD4&pid=Api&P=0&w=342&h=180',height = 100, width = 100,
                                                  title = "Home", height = "30px"),
                                              style = "padding-top:10px; padding-bottom:10px;"),
                                            class = "dropdown")), 
  dashboardSidebar(
    sidebarMenu( img(src = "https://reliawire.com/wp-content/uploads/2018/09/esophogeal-organoid-CinChild.jpg", height = 240, width = 230),
      menuItem("Dashboard", tabName = "dashboard", icon = icon("bar-chart-o")),
      menuItem("OAC", icon = icon("database"), tabName = "rdb", startExpanded = TRUE,
               menuSubItem("005", icon = icon("exclamation-triangle"), tabName = "005"),
               menuSubItem("013", icon = icon("exclamation-triangle"), tabName = "013"),
               menuSubItem("036", icon = icon("exclamation-triangle"), tabName = "036"),
               menuSubItem("121", icon = icon("exclamation-triangle"), tabName = "121")
      ), menuItem("COAD", icon = icon("database"), tabName = "rdb", startExpanded = TRUE,
                  menuSubItem("005", icon = icon("exclamation-triangle"), tabName = "005"),
                  menuSubItem("013", icon = icon("exclamation-triangle"), tabName = "013"),
                  menuSubItem("036", icon = icon("exclamation-triangle"), tabName = "036"),
                  menuSubItem("121", icon = icon("exclamation-triangle"), tabName = "121")
      )
    )
  ),
  dashboardBody(

    tabItems(
      tabItem("dashboard",  fluidRow(
        box(
          tags$head(tags$link(rel="shortcut icon", href="favicon.ico")),
          img(src = 'https://www.cancerresearchuk.org/sites/default/files/styles/cruk_no_style/public/large-icon_alcohol_darkblue_rgb.jpg?itok=q5L2YLuM',height = 500, width = 500),

          title = "OAC modeling by Organoid culture", width = 12, status = "primary",  tags$li(a(href = 'https://github.com/beginner984/OESO-modelling-by-organoid-culture',
                                                                                icon("list-alt"),
                                                                                title = "github"),
                                                                              class = "dropdown")
        ),
        fluidRow(
          box(
            title = "Interactive heatmap of deriver genes", width = 4, status = "warning",
            p(""),
            #p("Using battle option one can generate up-to 9 sets."),
            tags$li(a(href = 'https://fi1d18.shinyapps.io/new_folderr/',
                      icon("list-alt"),
                      title = "Interactive heatmap"),
                    class = "dropdown")

          ),
          box(
            title = "Jaccard index", width = 4,status = "warning",
            p(""),
            tags$li(a(href = 'https://fi1d18.shinyapps.io/new_folderrr/',
                      icon("list-alt"),
                      title = "Jaccard heatmap"),
                    class = "dropdown")
          )
        ),fluidRow(
          box(
            title = "Citation", width = 12, status = "success",
            h4("If you use this app, please cite this:"),
            HTML("<h5>Underwood T, et al. <a href='' target='_blank'>Shiny app for exploring organoids</a>. </h5>")
          )
        )
      )),
      tabItem("005", DT::dataTableOutput("items_dt")),
      tabItem("013", DT::dataTableOutput("items_dt1")),
      tabItem("036",      fluidRow(
        tabBox(width = 12, height = NULL,

               tabPanel("Organoid 036",  fluidRow(
                 box(
                   title = "Mutational signature", width = 4, status = "warning",
                   p(""),
                   #p("Using battle option one can generate up-to 9 sets."),
                   img(src='https://github.com/beginner984/OESO-modelling-by-organoid-culture/blob/master/Organoid-image-for-English-banner-stand.png?raw=true', align = "center", height = 350, width = 600)

                 ),
                 box(
                   tags$li(a(href = 'https://www.dropbox.com/s/z2j52o9twr9hkzj/036.xlsx?dl=0',
                             icon("list-alt"),
                             title = "Patient details"),
                           class = "dropdown")
                 )
               )
               ),


               tabPanel("Data", value=2,

                        fluidRow(

                          valueBoxOutput("vbox1", width = 2),
                          valueBoxOutput("vbox2", width = 2),
                          valueBoxOutput("vbox3", width = 2),
                          valueBoxOutput("vbox4", width = 8),
                          valueBoxOutput("vbox5", width = 2),
                          valueBoxOutput("vbox6", width = 2),
                          valueBoxOutput("vbox7", width = 2),
                          valueBoxOutput("vbox8", width = 2)


                        ),

                        fluidRow(

                          column(width = 4,  tags$li(a(href = 'https://fi1d18.shinyapps.io/new_folder/',
                                                       icon("question"),
                                                       title = "Interactive heatmap"),
                                                     class = "dropdown"), box(title = "76 deriver genes from Frankel paper", width = NULL, solidHeader = FALSE, dataTableOutput("dat1"))),
                          column(width = 4,  box(title = "Annotated SNVs and INDELS", width = NULL, solidHeader = FALSE, dataTableOutput("dat2"))),
                          column(width = 4,  box(title = "Structural variants", width = NULL, solidHeader = FALSE, dataTableOutput("dat3")))),

                        fluidRow(


                          column(width = 4,  box(tags$li(a(href = 'https://github.com/beginner984/OESO-modelling-by-organoid-culture/blob/master/example.png?raw=true',
                                                           icon("image"),
                                                           title = "Structural variants"),
                                                         class = "dropdown") ),  img(src='https://github.com/beginner984/OESO-modelling-by-organoid-culture/blob/master/example.png?raw=true', align = "center", height = 100, width = 100), p("Structural variants")),
                          column(width = 4,  box(tags$li(a(href = 'https://github.com/beginner984/OESO-modelling-by-organoid-culture/blob/master/Untitled.png?raw=true',
                                                           icon("image"),
                                                           title = "Structural variants"),
                                                         class = "dropdown") ),  img(src='https://github.com/beginner984/OESO-modelling-by-organoid-culture/blob/master/Untitled.png?raw=true', align = "center", height = 100, width = 100), p("Total and minor copy number (purple/blue respectively)")),
                          column(width = 4,  box(tags$li(a(href = 'https://github.com/beginner984/OESO-modelling-by-organoid-culture/blob/master/1.png?raw=true',
                                                           icon("image"),
                                                           title = "Structural variants"),
                                                         class = "dropdown") ),  img(src='https://github.com/beginner984/OESO-modelling-by-organoid-culture/blob/master/1.png?raw=true', align = "center", height = 100, width = 100), p("Major and minor copy number (red/green respectively)")),
                          column(width = 4,  box(tags$li(a(href = 'https://github.com/beginner984/OESO-modelling-by-organoid-culture/blob/master/2.png?raw=true',
                                                            icon("image"),
                                                            title = "Mutational consequences"),
                                                          class = "dropdown") ),  img(src='https://github.com/beginner984/OESO-modelling-by-organoid-culture/blob/master/2.png?raw=true', align = "center", height = 100, width = 100), p("Mutational consequences"))


                        )

               )
        )
      )),tabItem("121", DT::dataTableOutput("items_dt2"))
    )
  )
)


server <- function(input, output) {


  output$items_dt = DT::renderDataTable(
    Patient_005,
    filter = 'bottom',
    options = list(scrollX = TRUE)
  )
  output$items_dt1 = DT::renderDataTable(
    Patient_013,
    filter = 'bottom',
    options = list(scrollX = TRUE)
  )

  output$dat1 <- renderDataTable(derivers,
                                 filter = 'bottom',
                                 options = list(scrollX = TRUE))
  output$dat2 <- renderDataTable({datatable(annotated_snv_indel,extensions = 'Responsive' )})
  output$dat3 <- renderDataTable(structural_variants,
                                 filter = 'bottom',
                                 options = list(scrollX = TRUE))
  output$items_dt2 = DT::renderDataTable(
    Patient_021,
    filter = 'bottom',
    options = list(scrollX = TRUE)
  )



}



shinyApp(ui, server)