Shining updateSliderInput:将双端滑块转换为单端滑块
我有一个双端闪亮滑块输入,如下所示:Shining updateSliderInput:将双端滑块转换为单端滑块,r,shiny,slider,R,Shiny,Slider,我有一个双端闪亮滑块输入,如下所示: sliderInput(inputId = "years", label="Choose base year and target year", min = 2015, max = 2060, value = c(2015,206
sliderInput(inputId = "years",
label="Choose base year and target year",
min = 2015,
max = 2060,
value = c(2015,2060),
step = 1,
sep = ""
)
在用户上传一个值后,我想将滑块的下端固定到某个值;上端仍应可移动。我试图通过使用updateSliderInput函数来实现这一点,并且只为“value”属性提供一个值(因此,滑块应该成为常规的单端滑块):
然而,这是行不通的;滑块仍然是双端的,两个控制柄都设置为2060。如何将双端滑块转换为常规滑块
亲切问候,
Requin这里有另一个更接近您的问题的解决方案,按下按钮后仅触发一次:
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)
下面是另一个更接近您的问题的解决方案,按下按钮后仅触发一次:
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)
您使用
renderUI
和“uiOutput”归档该文件是否有效?可能也有兴趣。使用renderUI
和“uiOutput”来归档是否有效?可能也有兴趣。很好的解决方案。OP,如果您想保留这些值,请考虑使用reactiveValues
good solution存储它们。OP,如果您想保留这些值,请考虑使用reactiveValues
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)