【问题标题】:R shiny numericInput step and min value interactionR闪亮的数字输入步骤和最小值交互
【发布时间】:2018-10-23 02:12:13
【问题描述】:

考虑 R Shiny 应用程序中的以下数字小部件:

numericInput("val", "Enter value:", value = 50, min = 0, step = 5)

如果您在应用运行时单击小部件中的向上/向下箭头,该值将按预期增加或减少 5 (0, 5, 10, 15,...)。

现在考虑将最小值更改为 1:

numericInput("val", "Enter value:", value = 50, min = 1, step = 5)

如果您现在点击向上/向下箭头,该值仍会增加/减少 5,但从 1 开始,创建序列 1, 6, 11, 16,...

当最小值为 1 时,是否可以保持 5 的增量/减量但从 0 开始(因此序列为 0、5、10、15、...)?

可能需要这样做的示例(如我的情况)是您希望用户输入(严格)正数,但增量/减量值为 5,因为 5 的倍数很好,很容易,四舍五入的数字(与 1、6、11、16 等相反)

【问题讨论】:

    标签: r shiny increment numeric minimum


    【解决方案1】:

    您可以使用updateNumericInput 来防止您的numericInput 中出现空值。这是一个例子:

    library(shiny)
    
    ui <- fluidPage(
      sidebarPanel(
        numericInput("val", "Enter value:", value=50, min = 0, step = 5)
      )
    )
    
    server <- function(input, output, session) {
      observeEvent(input$val, {
        x <- input$val
        if (x == 0 | is.na(x)){
          updateNumericInput(session, "val", value = 1)
        }
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 感谢您的想法。不幸的是,这行不通;我希望用户仍然能够输入任何大于零的实数(没有最大值),其中的值通常是 100k、200k、300k(即房价),因此跳过数以万计是有帮助的,然而这不应该阻止他们仍然能够输入更精确的数字。
    • 这很聪明。谢谢,它奏效了。看起来这也是提供输入验证的一种手段;用我想象的任何规则更新“if”条件?
    • 是的。例如,您可以使用模 x %% 5 != 0 来确保您只有 5 的倍数。
    • 酷。不要破坏你的好答案,但解决方案有点小问题:如果你足够快地点击箭头并随机快速点击等,你可以获得零值。不过不要抱怨,因为典型的用户不会像开发人员一样尝试破坏它!再次感谢。
    • 是的,这是一种解决方法。这可能是一个更好的解决方案。
    猜你喜欢
    • 2016-11-25
    • 2019-05-20
    • 2021-01-14
    • 2018-02-26
    • 1970-01-01
    • 2021-10-14
    • 2017-08-06
    • 2017-05-05
    • 2018-09-23
    相关资源
    最近更新 更多