【问题标题】:Show box only when data is loaded in shiny app仅在闪亮的应用程序中加载数据时显示框
【发布时间】:2016-08-13 09:29:15
【问题描述】:

我制作了一个闪亮的应用程序,我想在其中上传并在它旁边显示它。因为我的数据会很大,所以我把它做成了可滚动的并放在一个盒子里。

现在我只想在加载数据时显示该框。

我尝试了条件面板,但没有成功。

这里是代码

ui.R

library(shiny)
library(shinydashboard)
library(DT)
library(ggvis)
library(shiny)

ui <- dashboardPage(
  dashboardHeader(title = "Dashboard"),
  dashboardSidebar(sidebarMenu(

    menuItem("Data", tabName = "uploadData", icon = icon("table"))

  )),
  dashboardBody(
    tabItems(
      # First tab content
      tabItem(tabName = "gebIns"
      ),

      # Second tab content
      tabItem(tabName = "uploadData",
              fluidPage(
                fluidRow(
                  column(3,titlePanel("Upload Your Data"),
                         fileInput('file1', 'Choose CSV File',
                                   accept=c('text/csv', 
                                            'text/comma-separated-values,text/plain', 
                                            '.csv')),
                         tags$hr(),
                         checkboxInput('header', 'Header', TRUE),
                         fluidRow(column(6,
                                         radioButtons('sep', 'Separator',
                                                      c(Comma=',',
                                                        Semicolon=';',
                                                        Tab='\t'),
                                                      ',')),
                                  column(6,
                                         radioButtons('quote', 'Quote',
                                                      c(None='',
                                                        'Double Quote'='"',
                                                        'Single Quote'="'"),
                                                      '"'))),
                         selectInput('y', 'Y Variable', '---'),
                         numericInput('noOfVar', 'Number of Variables', 1),
                         actionButton("submit", "Submit")
                  ),

                  column(9,
                         box(
                           title = "Data", width = NULL, status = "primary",
                           div(style = 'overflow-x: scroll', DT::dataTableOutput('contents'))
                         )
                  )
                )
              )
      )
    )
  )
)

服务器.R

shinyServer(function(input, output, session) {
  #load the data when the user inputs a file
  theData <- reactive({
    infile <- input$file1        
    if(is.null(infile))
      return(NULL)        
    d <- read.csv(infile$datapath, header = T)
    d        
  })

  output$contents <- DT::renderDataTable({
    data1 <- theData()
  })

  # dynamic variable names
  observe({
    data<-theData()
    updateSelectInput(session, 'y', choices = names(data))
  }) 
  #gets the y variable name, will be used to change the plot legends
  yVarName<-reactive({
    input$y
  }) 
})

【问题讨论】:

    标签: r shiny shinydashboard


    【解决方案1】:

    您可以使用renderUI 并在您的数据上设置条件输出:

    # ui.R
      column(9,uiOutput("box"))
    
    # server.R
      output[["box"]] <- renderUI({
    
        if(is.null(theData()))return()
        box(
          title = "Data", width = NULL, status = "primary",
          div(style = 'overflow-x: scroll;', DT::dataTableOutput('contents'))
        )
    
      })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-04
      • 2016-10-03
      • 2017-07-28
      • 1970-01-01
      • 2018-07-28
      • 2022-06-19
      • 1970-01-01
      • 2017-11-18
      相关资源
      最近更新 更多