2017-07-19 83 views
1

我正在创建一个闪亮的仪表板,它在侧栏中有两个选项卡。 Tab1用于导入csv和Tab2用于显示所选变量的图表。SideBar在仪表板主体上没有渲染任何东西:R Shiny Dashboard

TAB2有1个选择输入选项选择变量情节

问题:点击侧边栏的选项卡后,我的仪表盘体不会改变。它总是向我显示Tab1内容​​即csv导入结果。 因此,尽管点击TAB2在侧边栏的,什么也没有发生

以下是我的脚本

library(shinydashboard) 
library(shiny) 
library(DT) 
#UI 

sidebar=dashboardSidebar(width=200, 
        sidebarMenu(id="sidebar", 
            menuItem("Data UpLoad", tabName = "dashboard", icon = icon("table"), 
              fileInput('file1','Choose CSV File', 
                accept=c('text/csv','text/comma-separated-values,text/plain', '.csv'))), 

            menuItem("Uni Variate", tabName = "Uni", icon = icon("line-chart"), 
              fluidRow(
              selectInput("options",label=h5("Select Column"),""))))) 


body= dashboardBody(
tabItems(
tabItem(tabName="dashboard",class='active', 
     fluidRow(
      box(
      title="Data",solidHeader = TRUE, collapsible = TRUE, 
      div(style='overflow-x: scroll',tableOutput("table1"))))), 

tabItem(tabName = "Uni", 
     fluidRow(box(title="Plot",solidHeader = TRUE,plotOutput("plot1"))), 
     h2("tab content")))) 

dashboardPage(
dashboardHeader(title= "test"),sidebar,body) 

#Server 
server <- function(input, output,session) { 
data_set <- reactive({ 
req(input$file1) 
inFile <- input$file1 
data_set1<-read.csv(inFile$datapath) 
list(data=data_set1) 
}) 
# updating select input of second tab in shiny side bar 
observe({ 
updateSelectInput(
    session, 
    "options", 
    choices = names(data_set()$data))}) 

# tab1 
output$table1= renderTable({ 
de=as.data.frame(data_set()$data[1:7,])}) 

#tab2 
output$plot1 <- renderPlot({ggplot(data_set$data,aes(y=input$options,x=Prediction))+geom_histogram(binwidth=0.50, fill="blue") }) 
} 

每个帮助是很重要的!

回答

2

看起来问题是关于将小部件放在侧栏上,它将它们作为子菜单。下面是几个可能的解决方案,在侧边栏上放置小部件,具体取决于您是否希望在非活动时隐藏它们。

方案1级的小部件总是可见

library(shinydashboard) 
library(shiny) 

sidebar <- dashboardSidebar(width=200, 
    sidebarMenu(id="sidebar", 
    menuItem("Data UpLoad", icon = icon("table"), tabName = "dashboard"), 
    div(
     fileInput('file1','Choose CSV File', 
     accept=c('text/csv','text/comma-separated-values,text/plain', '.csv')) 
    ), 
    menuItem("Uni Variate", icon = icon("line-chart"), tabName = "Uni"), 
    div(
     selectInput("options",label=h5("Select Column"),"") 
    ) 
) 
) 

body <- dashboardBody(
    tabItems(
    tabItem(tabName="dashboard", class='active', 
     box(title="Data",solidHeader = TRUE, collapsible = TRUE, 
     div(style='overflow-x: scroll', p("table1")) 
    ) 
    ), 
    tabItem(tabName = "Uni", 
     box(title="Plot", solidHeader = TRUE, p("plot1")) 
    ) 
) 
) 

server <- function(input, output,session) {} 

shinyApp(dashboardPage(dashboardHeader(title= "test"), sidebar, body), server = server) 

选项只有2只小部件可见,当标签被激活

请注意,以示对身体正确的选项卡,用户必须点击子项目。

library(shinydashboard) 
library(shiny) 

sidebar <- dashboardSidebar(width=200, 
    sidebarMenu(id="sidebar", 
     menuItem("data", icon = icon("table"), tabName = "dashboard", 
     menuSubItem(tabName = "dashboard", 
      fileInput('file1','Choose CSV File', 
      accept=c('text/csv','text/comma-separated-values,text/plain', '.csv')) 
    )), 
     menuItem("Uni Variate", icon = icon("line-chart"), tabName = "Uni", 
     menuSubItem(tabName = "Uni", 
      selectInput("options",label=h5("Select Column"),"") 
    )) 
) 
) 

body <- dashboardBody(
    tabItems(
    tabItem(tabName="dashboard", class='active', 
     box(title="Data",solidHeader = TRUE, collapsible = TRUE, 
     div(style='overflow-x: scroll', p("table1")) 
    ) 
    ), 
    tabItem(tabName = "Uni", 
     box(title="Plot", solidHeader = TRUE, p("plot1")) 
    ) 
) 
) 

server <- function(input, output,session) {} 

shinyApp(dashboardPage(dashboardHeader(title= "test"), sidebar, body), server = server) 
+0

是否有可能为主菜单下的每个menusubItem提供输入选项?如果是这样,你能指导我一个例子吗?当我尝试这样做时,表格/绘图不会渲染。谢谢 – user5249203