Можете ли вы объяснить Волшебство этих блестящих пример приложения?

Вот знаменитый пример shinyapp на главной странице Rstudio.

ui.R определите две табпанели на веб-странице.Первая вкладка отображает карту, а вторая вкладка, если для выбора даты из полной datetable в соответствии с selectInput.

часть кода:

 ...

 tabPanel("Data explorer",
    fluidRow(
      column(3,
        selectInput("states", "States", c("All states"="", structure(state.abb, names=state.name), "Washington, DC"="DC"), multiple=TRUE)
      ),
      column(3,
        conditionalPanel("input.states",
          selectInput("cities", "Cities", c("All cities"=""), multiple=TRUE)
        )
      ),
      column(3,
        conditionalPanel("input.states",
          selectInput("zipcodes", "Zipcodes", c("All zipcodes"=""), multiple=TRUE)
        )
      )
    ),
    fluidRow(
      column(1,
        numericInput("minScore", "Min score", min=0, max=100, value=0)
      ),
      column(1,
        numericInput("maxScore", "Max score", min=0, max=100, value=100)
      )
    ),
    hr(),
    DT::dataTableOutput("ziptable")
  ),
...
  1. Я не знаю, какая строка кода определяет переменные , state.nameиstate.abb, который используется в 4-й строке блока выше.

  2. Функция выбора иерархии здесь довольно проста. Почему он может работать без choicesВо второй и третьей selectInputфункции.

https://github.com/rstudio/shiny-examples/blob/master/063-superzip-example/ui.R

1 ответ

  1. 1

    state.abb и state.nameэто S наборов данных, который существует в R см. ?state.abb

    2

    Есть также сервер.р
    с

    observe({
        cities <- if (is.null(input$states)) character(0) else {
          filter(cleantable, State %in% input$states) %>%
            `$`('City') %>%
            unique() %>%
            sort()
        }
        stillSelected <- isolate(input$cities[input$cities %in% cities])
        updateSelectInput(session, "cities", choices = cities,
          selected = stillSelected)
      })
    

    So choises changed dynamic from serever side