R Shiny中相互依赖的输入滑块

阿德巴特

我尝试在一个闪亮的应用程序中制作两个相互依赖的输入滑块,但似乎无法使其正常工作。我计划在闪亮的应用程序中使用这种情况,为简化起见在这里用一个简化的“玻璃半空/满”示例进行说明,其中一个滑块应显示玻璃充满和一个空:

library(shiny)

ui =(pageWithSidebar(
  headerPanel("Glass fullness"),
  sidebarPanel(
    sliderInput("Full", "% water", min = 0, max = 1, value = 0.2),
    #display dynamic UI
    uiOutput("Empty")),
  mainPanel()
))

server = function(input, output, session){

  # make dynamic slider 
  output$Empty <- renderUI({
    sliderInput("Empty", "% air", min=0, max=1, value=1-input$Full)
  })

}

runApp(list(ui = ui, server = server))

我理解value = 0.2value=1-input$Full导致上面的代码仅使第二个滑块依赖于第一个滑块,而不是相反。我的问题是我想使两者相互依赖。我尝试为Full添加uiOutput(“ Full”)和动态滑块,但无法解决循环编码问题。

以上代码的结果如下:

玻璃杯半空/全屏截图

任何帮助,不胜感激!

维克多

嗨,您可以在UI中定义滑块,并在需要时在服务器中对其进行更新:

library(shiny)

ui =pageWithSidebar(
  headerPanel("Glass fullness"),
  sidebarPanel(
    sliderInput(inputId = "Full", label = "% water", min = 0, max = 1, value = 0.2),
    sliderInput(inputId = "Empty", label = "% air", min = 0, max = 1, value = 1 - 0.2),
    uiOutput("Empty")),
  mainPanel()
)

server = function(input, output, session){

  # when water change, update air
  observeEvent(input$Full,  {
    updateSliderInput(session = session, inputId = "Empty", value = 1 - input$Full)
  })

  # when air change, update water
  observeEvent(input$Empty,  {
    updateSliderInput(session = session, inputId = "Full", value = 1 - input$Empty)
  })

}

shinyApp(ui = ui, server = server)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章