sliderInput
的最小值和最大值可输入。因此,用户可以滑动值,但也应该有机会在值的蓝色框中键入值。这是一个简单的可重现示例:
library(shiny)
ui <- fluidPage(
sliderInput("range", "Your range",
min = 0, max = 1000, value = c(400, 500)),
)
server <- function(input, output) {
}
shinyApp(ui, server)
输出:
所以现在您只能滑动范围,但我想为用户提供在两个蓝色框中键入值的选项。所以我想知道是否有人知道如何使 sliderInput 也可输入?
解决方法是创建两个链接到范围滑块的数字输入:
ui <- fluidPage(
numericInput("obs_numeric1", "Min range value", min = 0, max = 1000, value = 400),
numericInput("obs_numeric2", "Max range value", min = 0, max = 1000, value = 500),
sliderInput("obs", "Range slider:",
min = 0, max = 1000, value = c(400, 500)
)
)
server <- function(input, output, session) {
observeEvent(input$obs, {
updateNumericInput(session, "obs_numeric1", value = input$obs[1])
})
observeEvent(input$obs, {
updateNumericInput(session, "obs_numeric2", value = input$obs[2])
})
observeEvent(input$obs_numeric1 | input$obs_numeric2, {
updateSliderInput(session, "obs",
value = c(input$obs_numeric1, input$obs_numeric2))
})
}
shinyApp(ui, server)
甚至用于生成滑块的 Ion Range Slider Jquery 库也建议使用这种技术来更新范围值,参见此处。这也是他们的 github 页面上的请求。