[英]Shiny updateSliderInput: Convert double-ended to single-ended slider
我有一個像這樣的雙頭閃亮滑塊輸入:
sliderInput(inputId = "years",
label="Choose base year and target year",
min = 2015,
max = 2060,
value = c(2015,2060),
step = 1,
sep = ""
)
用戶上載值后,我想將滑塊的下端固定為某個值。 上端應仍可移動。 我嘗試通過使用updateSliderInput函數並僅為“值”屬性提供一個值來實現這一點(因此,該滑塊應成為常規的單端滑塊):
observeEvent(upload(), {
updateSliderInput(session, inputId = "years", min = base_year(), max = 2060, value = 2060)
})
但是,這不起作用。 滑塊仍然是雙端的,並且兩個手柄都設置為2060。如何將雙端滑塊轉換為常規滑塊?
親切的問候,
雷金
這是另一個更接近您的問題的解決方案,在按下按鈕后僅觸發一次:
library(shiny)
ui <- fluidPage(
uiOutput("Slider_UI"),
conditionalPanel("input.fixLower == 0", {actionButton("fixLower", "Fix lower range")})
)
server <- function(input, output, session) {
fixedLower <- reactiveVal()
observeEvent(input$fixLower, {
fixedLower(min(isolate({input$years})))
}, once = TRUE)
output$Slider_UI <- renderUI({
if(is.null(fixedLower())){
sliderInput(inputId = "years",
label="Choose base year and target year",
min = 2015,
max = 2060,
value = c(2015, 2060),
step = 1,
sep = ""
)
} else {
sliderInput(inputId = "years",
label="Choose base year and target year",
min = fixedLower(),
max = 2060,
value = fixedLower(),
step = 1,
sep = ""
)
}
})
}
shinyApp(ui = ui, server = server)
如@DSGym所建議,這是使用renderUI
的示例:
library(shiny)
ui <- fluidPage(
radioButtons(inputId="type_select", label="Select slider type", choices = list("Standard slider", "Range slider")),
uiOutput("Slider_UI")
)
server <- function(input, output, session) {
output$Slider_UI <- renderUI({
req(input$type_select)
if(input$type_select == "Range slider"){
presetValues <- c(2015, 2060)
} else {
presetValues <- 2060
}
sliderInput(inputId = "years",
label="Choose base year and target year",
min = 2015,
max = 2060,
value = presetValues,
step = 1,
sep = ""
)
})
}
shinyApp(ui = ui, server = server)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.