Сделайте блестящий объект пользовательского интерфейса (например, sliderInput) изменяющимся в зависимости от ввода пользователя - PullRequest
1 голос
/ 27 июня 2019
library(shiny)

ui <- fluidPage(
  shiny::titlePanel("Hurricane Maps"),
  sidebarLayout(
    sidebarPanel(shiny::selectInput('names', 'Choosing something:', choices=c('A', 'B', 'C'),
                 shiny::sliderInput("duration", "Range of Storm:", min = should_vary,
                                    max =  should_vary, value = c( should_vary, should_vary)
                                    ))
  )
)
server <- function(input, output) {

}
shinyApp(ui = ui, server = server)

Выше приведен код.

Мне нужно, чтобы "should_vary" варьировалась в зависимости от того, был ли выбран A, B или C.

1 Ответ

1 голос
/ 27 июня 2019

Вам необходимо:

  1. Использовать renderUI в блестящей серверной части для программного создания объекта пользовательского интерфейса
  2. Этот объект должен зависеть от names ID (т.е. вы должны сделать input$names реактивным)
  3. В части пользовательского интерфейса вы должны вставить визуализированный объект с помощью uiOutput

Код:

library(shiny)

ui <- fluidPage(
  selectInput("names", "Choosing something:", c("A", "B", "C"), "A"),
  uiOutput("duration_rendered")
)

server <- function(input, output) {

  input_names <- reactive({
    switch(input$names, "A" = 1, "B" = 2, "C" = 3)
  })

  output$duration_rendered <- renderUI({
    sliderInput(
      "duration",
      "Range of Storm:",
      min = input_names(),
      max =  input_names() + 10,
      value = c(input_names(), input_names() + 10)
    )
  })

}
shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...