我尝试在一个闪亮的应用程序中制作两个相互依赖的输入滑块,但似乎无法使其正常工作。我计划在闪亮的应用程序中使用这种情况,为简化起见在这里用一个简化的“玻璃半空/满”示例进行说明,其中一个滑块应显示玻璃充满和一个空:
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.2
和value=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] 删除。
我来说两句