0

我想selectInput从 CSV 文件中为 a 创建一个列表,但是从基于前两个selectInputs 的子集创建。这意味着在我的应用程序上:

1) 用户从列表中选择物种名称

radioButtons("species", "Which species are you workingwith?",
          list("Caretta caretta"="Cc", 
               "Chelonia mydas"="Cm", 
               "Dermochelys coriacea"="Dc",
               "Eretmochelys imbricata"="Ei",
               "Lepidochelys kempii"="Lk",
               "Lepidochelys olivacea"="Lo",
               "Natator depressus"="Nd"))

2)用户根据物种从列表中选择一个筑巢区域(国家):

conditionalPanel(
            condition="input.country_type=='List' & input.species=='Cc'",
            selectInput("country", "Country:",
                        choices=subset(NestingArea2, Sp=='Cc')$Country)),

          conditionalPanel(
            condition="input.country_type=='List' & input.species=='Cm'",
            selectInput("country", "Country:",
                        choices=subset(NestingArea2, Sp=='Cm')$Country)),
          ......

3) 然后用户必须从一个列表中选择一个 RMU,每个“物种”和“国家”都不同。我已经尝试过了,但没有奏效:

selectInput("rmu", "RMU:",
            choices=subset(
                  NestingArea2, Sp=='input.species', Country=='input.country')$RMU)

.csv (NestingArea2) 文件有 3 列,如下所示: Sp | 国家 | 环网柜

我可以做我在 (2) 上所做的事情,但由于有很多国家,我正在寻找更容易的东西。

4

1 回答 1

1

分别为每个国家|RMU 创建条件面板和选择输入将非常繁琐且(编码)容易出错。您正在寻找的是一个动态 UI,其中 selectInput 中的选择取决于先前的选择。

我没有对此进行测试,因为我没有您的数据,但以下内容应该可以让您大部分时间到达那里。将下面的两个输出放在 server.R 中。然后将 uiOutputs 放入 ui.R 中(注意:根据需要添加逗号)。然而,在这样做之前,请务必阅读上面链接的关于动态 ui 的 Shiny 文档。

放入server.R

output$countrySelect <- renderUI({
  countryChoices <- subset(NestingArea2, Sp==input$species)$Country)
  selectInput("country", "Country:", choices=countryChoices)
})

output$rmuSelect <- renderUI({
  rmuChoices <- subset(NestingArea2, Sp==input$species, Country==input$country)$RMU
  selectInput("rmu", "RMU:", choices=rmuChoices)
})

放入ui.R

uiOutput('countrySelect'),
uiOutput('rmuSelect')
于 2014-02-08T21:05:55.637 回答