изменить значения по умолчанию на основе другого значения selectInput в блестящем R - PullRequest
0 голосов
/ 24 августа 2018

Я хочу, чтобы два selectInput были блестящими.Первый имеет выбор со значением по умолчанию «A».Я хочу, чтобы второе входное значение по умолчанию основывалось на значении первого.то есть.Если первый выбор - A, то по умолчанию второй - «НИЗКИЙ», если первый выбор - «С» или «D», по умолчанию второй - «ВЫСОКИЙ».Мне нужно, чтобы параметр второго входа был изменен на что угодно.

В настоящее время я использую selectInput с uiOutput, чтобы связать его вместе, как показывает мой код.В настоящее время второе значение по умолчанию всегда равно LOW, даже когда я выбираю C или D. Я хочу иметь возможность выбрать C, и для второго выбора по умолчанию установлено значение HIGH

Мой код:

df=data.frame(expand.grid(col1=LETTERS[1:4],col2=c('LOW','MEDIUM','HIGH')))

ui = fluidPage(
  column(4,
         selectInput('d1','Drop 1',
                     choices = sort(unique(df$col1)),
                     selected = sort(df$col1)[1]),
         uiOutput("secondSelection")
  )
)

server <- function(input, output, session) {
  output$secondSelection = renderUI({
    selectInput("User", "Value Dependent on Drop 1:", 
                choices = as.character(df[df$col1==input$d1,"col2"]))
  }) 
}

shinyApp(ui, server)

1 Ответ

0 голосов
/ 24 августа 2018

Я нашел функцию updateselectinput и добавил ее, чтобы решить проблему

df=data.frame(expand.grid(col1=LETTERS[1:4],col2=c('LOW','MEDIUM','HIGH')))

ui = fluidPage(
  column(4,
         selectInput('d1','Drop 1',
                     choices = sort(unique(df$col1)),
                     selected = sort(df$col1)[1]),
         selectInput('d2','Drop 2',
                     choices = sort(unique(df$col2))
                     )
  )
)

server <- function(input, output, session) {

  observe({
    x = input$d1

    if(x=='A'){
      updateSelectInput(session,'d2',
                        choices = sort(unique(df$col2)),
                        selected = 'LOW')
    }else if(x=='C' || x=='D'){
      updateSelectInput(session,'d2',
                        choices = sort(unique(df$col2)),
                        selected = 'HIGH')
    }else{
      updateSelectInput(session,'d2',
                        choices = sort(unique(df$col2)),
                        selected = 'MEDIUM')
    }

  })

}

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