Reputation: 335
I have an app wherein I am looking to take user input in the "ui" file and use that information to update a dataframe in the "server" file. The following is a simplified version of what the code looks like:
Dataframe <- readRDS(Dataframe.rds)
Table <- readRDS(Table.rds)
ui <- fluidPage(
selectInput("Location","Location",
unique(as.character(Table$Locations)), multiple = TRUE)
)
server <- function(input,output) {
Dataframe2 <- Dataframe %>% select(get(input$Location))
}
The above code works if I do not use the "multiple = TRUE" option for selectInput, meaning that the Dataframe2 object only selects the column that matches with the single input that the user has chosen. However, I do not know how I can do the same thing for multiple inputs, when the choices could vary from only 1 item being passed on from selectInput up to 10 items in total.
Upvotes: 14
Views: 41983
Reputation: 1
Why don't you pass a vector into select function if you need more than one option?
ui <- fluidPage(
titlePanel("App"),
selectInput('column', 'Select a column', names(DataFrame), multiple = TRUE)
),
mainPanel(
DT::DTOutput('table')))
server <- function(input, output){
output$table <- DT::renderDT({
DataFrame%>%
select(c(input$column))
})
}
I simplified but hopefully you got the idea, that worked for me.
Upvotes: 0
Reputation: 3250
If I understood your question correctly this is an example with multiple selection using the mtcars
data frame:
library(shiny)
library(dplyr)
data(mtcars)
ui <- fluidPage(
titlePanel("MTCARS"),
selectInput("Columns","Columns",
names(mtcars), multiple = TRUE),
verbatimTextOutput("dfStr")
)
server <- function(input, output) {
Dataframe2 <- reactive({
mtcars[,input$Columns]
})
output$dfStr <- renderPrint({
str(Dataframe2())
})
}
shinyApp(ui, server)
Upvotes: 21