sliderInput("myslider", "Slider:", min=1, max=100, value=6)
返回带有标记标签的滑块,分别为1,11,21,31,...,91和100。
我希望确定这些tickmark标签的启发式方法能够返回更合理的1,10,20,30,...... 90,100的值。
我想这会出现很多,因为从1到100的滑块是非常常见的。 (如果设置min = 0,它确实会显示所需的tickmark标签,但在许多应用中,您不希望输入为0。
目前,无法为sliderInput提供用户定义的tickmark标签。是否有针对标签的解决方法?
类似的问题已发布here,但它讨论的是创建用户定义的刻度线,而不是标签。
答案 0 :(得分:0)
在https://groups.google.com/forum/#!topic/shiny-discuss/AeAzR4p2h1g中是此问题的解决方案:
ui <- pageWithSidebar(
headerPanel("Slider labels"),
sidebarPanel(
uiOutput("slider")
),
mainPanel()
)
server <- function(input, output) {
output$slider <- renderUI({
args <- list(inputId="foo", label="slider :", ticks=c(90,95,99,99.9), value=c(2,3))
args$min <- 1
args$max <- length(args$ticks)
if (sessionInfo()$otherPkgs$shiny$Version>="0.11") {
# this part works with shiny 1.5.0
ticks <- paste0(args$ticks, collapse=',')
args$ticks <- T
html <- do.call('sliderInput', args)
html$children[[2]]$attribs[['data-values']] <- ticks;
} else {
html <- do.call('sliderInput', args)
}
html
})
}
runApp(list(ui = ui, server = server))