【问题标题】:How to make sliders more interactive in shiny?如何使滑块在闪亮时更具交互性?
【发布时间】:2021-04-02 02:32:48
【问题描述】:

瞄准

通过堆栈溢出搜索后,我发现了如何使滑块交互。但我想让他们互动更多。

假设我有一袋苹果。我选择那里有多少个苹果,例如10. 在这 10 个中,如果我说 6 个是好苹果,那么 4 个应该是坏的,等等。相反,如果我认为 6 个是坏的,那么好的滑块应该限制在 4 个。

尝试

library(shiny)
library(dplyr)


ui <- navbarPage(
  
  tabPanel(title = "Bad Apples", 
           mainPanel(h3("A Few Bad Apples", align = "center"), 
                     sliderInput(inputId = "total", label = "Total Apples", min = 0, max = 10, value = 5),
                     uiOutput("goodApples"), 
                     uiOutput("badApples"))) 
  
)


server <- function(input, output) {
  
  output$goodApples <- renderUI({
    sliderInput("goodApples", "Good Apples", min=0, max=input$total, value=input$total/2)
  })
  
  output$badApples <- renderUI({
    sliderInput("badApples", "Bad Apples", min=0, max=input$total, value=input$total/2)
  })
  
}

# Run the app ----
shinyApp(ui = ui, server = server)

问题

在我的尝试中,我仍然可以移动与苹果总数不一致的好苹果和坏苹果滑块。此外,好苹果滑块不会影响坏苹果滑块。

任何帮助将不胜感激。

【问题讨论】:

    标签: r shiny slider


    【解决方案1】:

    你没有表现出 goodApples 和 badApples 之间的依赖关系。

    试试这个

    server <- function(input, output, session) {
    
      output$goodApples <- renderUI({
        total <- isolate(input$total)
        sliderInput("goodApples", "Good Apples", min=0, max=total, value=total)
      })
      
      output$badApples <- renderUI({
        total <- isolate(input$total)
        sliderInput("badApples", "Bad Apples", min=0, max=total, value=(total-input$goodApples))
      })
        
      observeEvent(input$total, {
        updateSliderInput(session, "goodApples", max = input$total)
        updateSliderInput(session, "badApples", max=input$total, value = input$total-input$goodApples)
      }, ignoreInit = TRUE)
      
      observeEvent(input$badApples, {
        updateSliderInput(session, "goodApples", value = input$total-input$badApples)
      })
      
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-15
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2017-05-05
      相关资源
      最近更新 更多