仅在闪亮的应用程序中加载数据时显示框

时间:2016-08-13 09:29:16

标签: r shiny shinydashboard

我制作了一个闪亮的应用程序,我想上传并在旁边显示它。由于我的数据量很大,所以我将其设置为可滚动并将其放在一个盒子里。

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

enter image description here

我尝试过条件小组,但它没有用。

这是代码

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'))
                         )
                  )
                )
              )
      )
    )
  )
)

server.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
  }) 
})

1 个答案:

答案 0 :(得分:4)

您可以对数据使用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'))
    )

  })
相关问题