0

CSV ファイルからのリストを作成したいのですが、selectInput前の 2 つの に基づいて作成されたサブセットから作成し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 つの列があります。国 | RMU

(2)と同じようにできますが、国が多いのでもっと簡単なものを探しています。

4

1 に答える 1

1

国ごとに conditionalPanel と selectInput を作成する|RMU を個別に作成するのは非常に面倒で、(コーディング) エラーが発生しやすくなります。あなたが探しているのは、selectInput の選択が以前の選択に依存する動的 UIです。

私はあなたのデータを持っていないので、これをテストしていませんが、次の方法でほとんどの方法で取得できます。以下の 2 つの出力を 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 に答える