Naj S Naj S - 2 months ago 27
R Question

R shiny; how to use multiple inputs from selectInput to pass onto 'select' option in dplyr?

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.

Answer

If I understood your question correctly this is an example with multiple selection using the mtcars data frame:

ui.R

    library(shiny)
    data(mtcars)

    shinyUI(fluidPage(


      titlePanel("MTCARS"),
      selectInput("Columns","Columns",
                  names(mtcars), multiple = TRUE),
      verbatimTextOutput("dfStr")


    ))

server.R

    library(shiny)
    library(dplyr)
    data(mtcars)

    shinyServer(function(input, output) {


                    Dataframe2 <- reactive({
                            mtcars[,input$Columns] 
                    })
                    output$dfStr <- renderPrint({
                            str(Dataframe2())
                    })



    })