使用shinyjs的Disasble有光泽的sliderInput

时间:2016-10-21 12:39:44

标签: r shiny shinyjs

我正在使用dplyr构建多个lm()模型。我想允许用户在Shiny应用程序中更改自变量值 - 通过shiny :: sliderInput()。但只有在“适合度”说R ^ 2大于阈值时才这样做 - 否则禁用滑块。我试过使用shinyjs :: disable()函数。见下文,但无法使其发挥作用。关于我做错了什么的任何想法?

library(shiny)
library(shinyjs)

# Define UI for application that draws a histogram
ui <- shinyUI(fluidPage(
   sidebarLayout(
      sidebarPanel(
         sliderInput("test","Nice number",min = 1,max = 50,value = 30)
      ),
    mainPanel(
        textOutput("valueText")
      )
   )
))

# Define server to disable slider if value selected

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

  value <- reactive(input$test)
   output$valueText <- renderText(paste(value()))

   #How to diasble slider?
      reactive(if(value()==35){
       shinyjs::disable('test')
     }
   )
   })

# Run the application 
shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:1)

你必须在ui.R中调用useShinyjs()。

这是代码:

    library(shiny)
    library(shinyjs)

    # Define UI for application that draws a histogram
    ui <- shinyUI(
            tagList(
            useShinyjs(),
            fluidPage(
            sidebarLayout(
                    sidebarPanel(
                            sliderInput("test","Nice number",min = 1,max = 50,value = 30)
                    ),
                    mainPanel(
                            textOutput("valueText")
                    )
            )
    )

    )
    )

    # Define server to disable slider if value selected

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

            value <- reactive(input$test)
            output$valueText <- renderText(paste(value()))

            #How to diasble slider?
            observeEvent(value(), {
                    if(value()==35){
                            shinyjs::disable('test')
                    }  
            })

    })

    # Run the application 
    shinyApp(ui = ui, server = server)