2016-09-30 5 views
5

Ich habe eine App, in der ich suche, Benutzereingaben in der "ui" -Datei zu nehmen und diese Informationen zu verwenden, um einen Datenrahmen in der "Server" -Datei zu aktualisieren. Das Folgende ist eine vereinfachte Version von dem, was der Code wie folgt aussieht:R glänzend; Wie benutzt man mehrere Eingaben von selectInput, um auf 'select' in dplyr zu wechseln?

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

Der obige Code funktioniert, wenn ich das nicht „multiple = TRUE“ verwende Option für selectInput, was bedeutet, dass das Dataframe2 Objekt nur die Spalte auswählt, die übereinstimmt mit der einzelnen Eingabe, die der Benutzer gewählt hat. Allerdings weiß ich nicht, wie ich das gleiche für mehrere Eingaben tun kann, wenn die Auswahlmöglichkeiten variieren könnten, von nur 1 Artikel, der von selectInput bis zu 10 Artikel insgesamt weitergegeben wird.

Antwort

6

Wenn ich Ihre Frage richtig verstanden ist dies ein Beispiel mit Mehrfachauswahl der mtcars Datenrahmen mit:

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



    }) 
+0

Perfect. Das hat mir ziemlich geholfen. –

Verwandte Themen