【问题标题】:Defining a specific range of values for a sliderInput in Shiny在 Shiny 中为滑块输入定义特定范围的值
【发布时间】:2020-10-14 16:11:15
【问题描述】:

即使认为在 Shiny 中有很多主题涉及滑块输入的属性,我也找不到我正在尝试做的事情的解决方案。

我的问题很简单:我想调整我的代码(见下文)以创建一个间隔为“10”的滑块(从 0 到 10、10 到 20、3 到 13 等...)

###running example: 

ui <-basicPage(
  sliderInput("id", "Ranking",
                           min = 2, max = 60, value = c(2,15)))


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

shinyApp(ui, server)

有什么想法吗?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    您可以在每次更改滑块时调用updateSliderInput 来强制执行间隔。

    这里的诀窍是记住以前的值来更新正确的处理程序(那个没有改变的处理程序)

    INTERVAL = 13
    value = c(2, 2 + INTERVAL)
    
    ui <-basicPage(
      sliderInput("id", "Ranking",
                  min = 2, max = 60, value = value))
    
    server <- server <- function(input, output, session) {
      observeEvent(input$id,{
        newvalue = input$id
        
        if(value[1] != newvalue[1] && newvalue[2] - newvalue[1] != INTERVAL)
          updateSliderInput(session, "id", value = c(newvalue[1], newvalue[1] + INTERVAL))
        
        if(value[2] != newvalue[2] && newvalue[2] - newvalue[1] != INTERVAL)
          updateSliderInput(session, "id", value = c(newvalue[2] - INTERVAL, newvalue[2]))
        
        value <<- newvalue
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 太棒了!这正是我想要的!谢谢休伯特:)
    【解决方案2】:

    您可能希望在 sliderInput() 函数中使用 step 参数。 Documentation here。但是我遇到了必须能够滑动到个人号码的问题。

    或者您可以选择一个输入作为起始范围,然后将该数字加 10。

    library(shiny)
    
    
    ui <- fluidPage(
        sliderInput("num2", "Pick a starting Range", value = 20, min = 2, max = 60),
        textOutput("num2")
    )
    
    server <- function(input, output, session) {
        output$num2 <- renderText({
            paste0("Your range is ", input$num2, " to ", input$num2 +10, "!")
        })
    }
    
    # Run the application 
    shinyApp(ui = ui, server = server)
    

    【讨论】:

    • 非常感谢您回答丹尼尔!但理想情况下,我想保留“双头滑块输入”来定义范围......我已经阅读了闪亮的文档,但我找不到实现这一目标! ://
    • 很难将间隔设置为 10,但仍然允许它滑动到单个数字。如果您找到解决方案,请告诉我,学习会很棒。
    • 我会的!谢谢丹尼尔!
    猜你喜欢
    • 2016-11-06
    • 2015-10-16
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2021-10-12
    • 2021-08-22
    相关资源
    最近更新 更多