I have a selectInput panel in shiny. I only dealt with the fixed values of choices in selectInput till now.
Now I am at a point where I want to vary these choices based on some other conditions in shiny Ui.
Example:
Ui.R
shinyUI(fluidPage(
fluidRow(column(3,
wellPanel(
h4("Data Upload"),
fileInput('file1', h5('Choose Your Model Data'), accept=c('text/csv','text/comma-separated-values,text/plain','.OUT')),
fileInput('file2', h5('Choose Your Observation Data'), accept=c('text/csv','text/comma-separated-values,text/plain','.xlsx'))
),
wellPanel(uiOutput("check"))))
Server.R
shinyServer(function(input, output) {
output$check <- renderUI({
selectInput("check", label = h4("Dataset Selection"), choices = c("Model" = 1, "Observation" = 2, "Both" = 3), selected = 1, multiple = F )
})
a <- reactive({
fileinput1 <- input$file1
if (is.null(fileinput1))
return(NULL)
read.table(fileinput1$datapath, header = TRUE, col.names = c("Ei","Mi","hours","Nphy","Cphy","CHLphy","Nhet","Chet","Ndet","Cdet","DON","DOC","DIN","DIC","AT","dCCHO","TEPC","Ncocco","Ccocco","CHLcocco","PICcocco","par","Temp","Sal","co2atm","u10","dicfl","co2ppm","co2mol","pH"))
})
#Upload Observation Data
b <- reactive({
fileinput2 <- input$file2
if (is.null(fileinput2))
return(NULL)
#xlfile <- list.files(pattern = ".xlsx")
xlfile <- fileinput2[1]
wb <- loadWorkbook(xl_file)
sheet_ct <- wb$getNumberOfSheets()
b <- rbindlist(pblapply(1:sheet_ct, function(x) {
res <- read.xlsx(xl_file, x)
}), fill=TRUE)
b <- b [-c(1),]
print (b)
})
Now I want to make the choices in selectInput dynamic based on the file input.
?updateSelectInput
and its family functions to handle these problems. Also take a look at?conditionalPanel
. – nicola