2017-09-18 1 views
1

Ich möchte einen selectInput mit Optionen erstellen, die auf einem Datenrahmen basieren, den ich lade. Diese Optionen sollten wie im folgenden Beispiel gruppiert werden. Ich weiß, wie man es macht, wenn ich vollständig schreibe, aber ich möchte, dass die Dropdown-Liste automatisiert wird, so dass sie sich automatisch ändert, wenn ich den Datenrahmen ändere. Ich könnte die Liste der Gruppen oder die Liste der Indikatoren in jeder Gruppe ändern.Dynamische Auffüllung einer gruppierten Liste von Auswahlmöglichkeiten in SelectInput (RShiny)

DD <- data.frame(group=c("Diagnosis","Diagnosis", "Treatment", "Treatment", "Outcome", "Outcome", "Outcome"), 
       Indicator=LETTERS[1:7]) 


> DD 
     group Indicator 
1 Diagnosis   A 
2 Diagnosis   B 
3 Treatment   C 
4 Treatment   D 
5 Outcome   E 
6 Outcome   F 
7 Outcome   G 

Dies ist der Stil Ich bin nach:

runApp(
    list(
    ui = fluidPage(
     sidebarLayout(
     sidebarPanel(
      selectInput(inputId = "IND", 
         label = "Select indicator:", 
         choices = list("Diagnosis" = c("A", "B"), 
             "Treatment" = c("C", "D"), 
             "Outcome" = c("E", "F", "G"))) 
      , width = 3), 

     mainPanel(
     ) 
     ) 
    ) 


    , server = function(input, output, session){ 
    } 
) 
) 

Antwort

2

Eine Option split der 'Indicator' von 'Gruppe' Spalte

library(shiny) 
DD <- data.frame(group=c("Diagnosis","Diagnosis", "Treatment", 
     "Treatment", "Outcome", "Outcome", "Outcome"), 
      Indicator=LETTERS[1:7]) 
runApp(
    list(
    ui = fluidPage(
     sidebarLayout(
     sidebarPanel(
      selectInput(inputId = "IND", 
         label = "Select indicator:", 
         choice = split(DD$Indicator, DD$group)) 
      , width = 3), 

     mainPanel(
     ) 
    ) 
    ) 


    , server = function(input, output, session){ 
    } 
) 
) 

-Ausgang

zu sein wäre

enter image description here

+1

Super einfache Lösung! GROSS! – Luc

Verwandte Themen