RStudio / Shiny:对CSV文件进行子集化

时间:2014-02-08 20:20:42

标签: r shiny subset selectinputdate

我想从CSV文件中为selectInput制作一个列表,但是要根据之前两个selectInput制作一个子集。这意味着在我的应用上:

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 |国家| RMU

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

1 个答案:

答案 0 :(得分:1)

为每个国家/地区创建一个conditionalPanel和selectInput | RMU将非常繁琐且(编码)容易出错。您正在寻找的是dynamic 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')