我制作了一个闪亮的应用程序,我想上传并在旁边显示它。由于我的数据量很大,所以我将其设置为可滚动并将其放在一个盒子里。
现在我只想在加载数据时显示该框。
我尝试过条件小组,但它没有用。
这是代码
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
})
})
答案 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'))
)
})