web-dev-qa-db-fra.com

R brillant; comment utiliser plusieurs entrées de selectInput pour passer sur l'option 'select' dans dplyr?

J'ai une application dans laquelle je cherche à saisir les entrées des utilisateurs dans le fichier "ui" et à utiliser ces informations pour mettre à jour une trame de données dans le fichier "serveur". Voici une version simplifiée de l'apparence du code:

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))
                                 }

Le code ci-dessus fonctionne si je n'utilise pas l'option "multiple = TRUE" pour selectInput, ce qui signifie que l'objet Dataframe2 ne sélectionne que la colonne qui correspond à l'entrée unique que l'utilisateur a choisie. Cependant, je ne sais pas comment je peux faire la même chose pour plusieurs entrées, lorsque les choix peuvent varier d'un seul élément transmis de selectInput à 10 éléments au total.

10
Naj S

Si j'ai bien compris votre question, voici un exemple de sélection multiple utilisant le cadre de données mtcars:

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())
                    })



    })
11
Valter Beaković