Блестящий: Включить sliderInput () на основе выбора в radioButton () - PullRequest
1 голос
/ 27 апреля 2020

У меня проблемы с настройкой observeEvent для правильной работы.

sliderInput() должен быть включен и доступен, только если Да выбран в radioButton()

Чего мне не хватает?

library(shiny)


ui <- fluidPage(


  radioButtons("EXBR", "External Beam Radiation", choiceValues=list("No","Yes"),
               choiceNames=list("No","Yes"), selected ="No", inline=T),
  sliderInput("EXBRGy", "Cumulative Gy dosage", 
              min = 2, max = 60, value = 40)


)

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

  observeEvent(input$EXBR, {
    if((input$EXBR == "Yes")){
      disable("EXBRGy")
    }else{
      enable("EXBRGy")
    }
  })

}

shinyApp(ui, server)

1 Ответ

2 голосов
/ 28 апреля 2020

Прежде чем использовать большинство shinyjs функций, вам нужно вызвать useShinyjs() в приложении ui. Лучше всего включать его в верхней части как соглашение. Также добавлено library(shinyjs) и удалены лишние скобки в операторе if.

library(shiny)
library(shinyjs)

ui <- fluidPage(
  shinyjs::useShinyjs(),
  radioButtons("EXBR", "External Beam Radiation", choiceValues=list("No","Yes"),
               choiceNames=list("No","Yes"), selected ="No", inline=T),
  sliderInput("EXBRGy", "Cumulative Gy dosage", 
              min = 2, max = 60, value = 40)
)

server <- function(input, output, session) {
  observeEvent(input$EXBR, {
    if(input$EXBR == "Yes"){
      disable("EXBRGy")
    }else{
      enable("EXBRGy")
    }
  })
}

shinyApp(ui, server)
...