R shiny numericInput 步骤和最小值交互

R shiny numericInput step and min value interaction

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

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

如果您在应用 运行 时单击小部件中的 up/down 箭头,该值将增加或减少 5(0、5、10、15,...)不出所料。

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

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

如果您现在单击 up/down 箭头,该值仍将 increase/decrease 增加 5,但从 1 开始,创建序列 1、6、11、16,...

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

一个可能需要这样做的例子(在我的例子中)是您希望用户输入一个(严格的)正数,但 increment/decrement 值为 5,因为 5 的倍数是漂亮、简单、四舍五入的数字(与 1、6、11、16 等相反)

您可以使用 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)