2016-04-20 13 views
0

Ich möchte eine Mehrfachauswahl von Spalten aus einem Datensatz und dann eine weitere Mehrfachauswahl von UNIQUE-Werten in den ausgewählten Spalten. Im Moment scheint die einzigartige Funktion nicht zu funktionieren. Es dupliziert die Werte, von denen über die Spaltenauswahl die meisten eindeutigen Werte haben.Eindeutige Werte funktionieren nicht in R glänzend selectInput

ui<-shinyUI(fluidPage(fluidRow(column(width = 4, 

    uiOutput("variants"), 
    uiOutput("variants2") 
    ) 
))) 

server <-shinyServer(function(input, output, session) { 

    df<-somedata 


    output$variants <- renderUI({ 
     selectInput ("choose_columns", 
         "Choose Attribute", 
         sort(unique(names(df)), decreasing = FALSE), 
         selected="", 
         multiple =TRUE) 

    }) 


    dat<-reactive({ 
    unique(df[,input$choose_columns]) 
    }) 



    output$variants2 <- renderUI({ 
    selectInput ('further', 
        'Choose Attribute(s) Value(s)', 
        dat(), 
        selected="", 
        multiple = TRUE) 
    }) 



}) 

shinyApp(ui, server) 

Antwort

0

Ihr Code scheint für mich zu arbeiten. Ich habe den Datensatz mtcars als Beispiel verwendet. Mein einziger Vorschlag ist, df<-somedata außerhalb (vorher) Ihres server Codes zu haben. Auf diese Weise werden die Daten nicht jedes Mal neu geladen, wenn der Benutzer Eingaben ändert. Unten ist mein Code mit mtcars:

ui<-shinyUI(
    fluidPage(
    fluidRow(
     column(width = 4, 
     uiOutput("variants"), 
     uiOutput("variants2") 
    ) 
    ) 
) 
) 

library(datasets) 
data("mtcars") 

server <- shinyServer(function(input, output, session) { 

    output$variants <- renderUI({ 
    selectInput ("choose_columns", 
     "Choose Attribute", 
     sort(unique(names(mtcars)), decreasing = FALSE), 
     selected="", 
     multiple =TRUE) 
    }) 

    dat<-reactive({ 
    unique(mtcars[,input$choose_columns]) 
    }) 

    output$variants2 <- renderUI({ 
    selectInput('further', 
     'Choose Attribute(s) Value(s)', 
     dat(), 
     selected="", 
     multiple = TRUE) 
    }) 
}) 

shinyApp(ui, server) 
+0

Selbst mit dem Datensatz außerhalb des dient die einzigartige Funktion funktioniert nicht wie ich es will. Wählen Sie "cyl" und "hp" in mtcars. Ich möchte, dass die Option (en) Attribut (e) wählen nur ONE '6', '4' und '8' unter 'cyl' hat. Gerade jetzt hat es mehrere. – eagermathperson

+0

Ahh, ich verstehe was du sagst. Es scheint, dass wenn glänzend das niedrigste gemeinsame Vielfache der eindeutigen Werte der zwei ausgewählten Variablen verwendet wird. Nicht sicher, warum das so ist oder wie man es los wird. Vielleicht wäre eine Möglichkeit, separate 'weitere'' selectInput's für jedes ausgewählte 'choice_columns'' selectInput' zu erstellen. –

0

Versuchen dat Druck(), werden Sie sehen, dass die Werte in jeder Spalte wiederholen kann, aber nie eine ganze Reihe zum anderen gleich sein. Die selectInput bricht nur dat() durch Spalten. Eine Möglichkeit, eindeutige Werte von Spalte zu bekommen am selectInput verwendet:

dat<-reactive({ 
    lapply(mtcars[,input$choose_columns], unique) 
}) 
+0

Sapply funktioniert eher als platt! Vielen Dank :) – eagermathperson