在 SelectInput (RShiny) 中动态填充选项的分组列表

Luc*_*Luc 1 r shiny

我想创建一个 selectInput ,其中包含基于我加载的数据框的选项。应将这些选项分组,如下例所示。我知道在完整写出时如何做到这一点,但是,我希望下拉列表是自动化的,这样当我更改数据框时它会自动更改。我可能会更改组列表或每个组内的指标列表。

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
Run Code Online (Sandbox Code Playgroud)

这就是我追求的风格:

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){
    }
  )
)
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

一种选择是split“指标”按“组”列

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){
    }
  )
)
Run Code Online (Sandbox Code Playgroud)

-输出

在此输入图像描述