闪亮:根据 radioButton() 中的选择启用 sliderInput()

shiny: Enable sliderInput() based on selection in radioButton()

我无法使 observeEvent 正常工作。

只有在 radioButton()

中选择了 Yes 才能启用和访问 sliderInput()

我错过了什么?

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)

在使用大多数shinyjs功能之前,您需要在应用程序的ui中调用useShinyjs()。最好将其包含在顶部附近作为约定。还在 if 语句中添加了 library(shinyjs) 并删除了额外的括号。

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)