如何使滑块在闪亮中更具交互性?
How to make sliders more interactive in shiny?
目标
通过堆栈溢出搜索后,我发现了如何使滑块交互。但我想让他们互动更多。
假设我有一袋苹果。我选择里面有多少个苹果,例如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)
问题
在我的尝试中,我仍然可以移动与苹果总数不一致的好苹果和坏苹果滑块。此外,好苹果滑块不会影响坏苹果滑块。
如有任何帮助,我们将不胜感激。
你没有表现出 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)
})
}
目标
通过堆栈溢出搜索后,我发现了如何使滑块交互。但我想让他们互动更多。
假设我有一袋苹果。我选择里面有多少个苹果,例如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)
问题
在我的尝试中,我仍然可以移动与苹果总数不一致的好苹果和坏苹果滑块。此外,好苹果滑块不会影响坏苹果滑块。
如有任何帮助,我们将不胜感激。
你没有表现出 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)
})
}