我想从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)上所做的事情,但由于有很多国家,我正在寻找更容易的事情。
答案 0 :(得分:1)
为每个国家/地区创建一个conditionalPanel和selectInput | RMU将非常繁琐且(编码)容易出错。您正在寻找的是dynamic UI,其中selectInput中的选项取决于之前的选择。
我没有对此进行测试,因为我没有您的数据,但以下内容应该可以帮到您。将两个输出放在server.R中。然后将uiOutputs放在ui.R中(注意:根据需要添加逗号)。在这之前,请务必阅读上面链接的动态ui上的Shiny文档。
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)
})
uiOutput('countrySelect'),
uiOutput('rmuSelect')