In the app below I want to update the second updateSelectInput()
I have in order to exclude the values selected in the first updateSelectInput()
after uploading a file. Normally the file uploads the dataset used for shiny widgets' values.
## app.R ##
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
fileInput("file1", "Choose CSV File", accept = ".csv"),
selectInput("col","Pick a column to change its name",
choices = colnames(iris)[-c(1)]),
selectInput("col2","Pick a column to change its name",
choices = colnames(iris)[-c(1)])
),
dashboardBody(
)
)
server <- function(session,input, output) {
observeEvent(input$file1, {
updateSelectInput(session, "col", label = "Select target country", choices = colnames(iris)[-c(1)])
ex_names <- colnames(iris)[-1]
ex_names <- ex_names[! ex_names %in% input$col]
updateSelectInput(session, "col2", label = "Select reference countries", choices =colnames(iris)[-c(1)] )
})
}
shinyApp(ui, server)
CodePudding user response:
Adding an observeEvent
for col
would update col2
every time a change has been made on the selected values of col
observeEvent(input$col, {
ex_names <- colnames(iris)[-1]
ex_names <- ex_names[!ex_names %in% input$col]
updateSelectInput(session, "col2", label="Select reference countries", choices=ex_names)
})